Recv/lib/repository/index.js

61 lines
1.3 KiB
JavaScript

//const debug = require('debug')('recv:users');
const _ = require('lodash');
const path = require('path');
const mkdirp = require('mkdirp');
const bcrypt = require('bcrypt');
const Datastore = require('nedb');
const shortid = require('shortid');
const retry = require('async-retry');
const UsersRepository = require('./users');
const CodesRepository = require('./codes');
const UploadsRepository = require('./uploads');
class Repository
{
constructor(config)
{
var self = this;
self.config = config;
}
async load()
{
var self = this;
return new Promise((resolve, reject) =>
{
const initStore = (filename) =>
{
var store = new Datastore({
filename: path.join(self.config.path, filename),
autoload: true
});
store.persistence.setAutocompactionInterval(self.config.autocompactionInterval);
return store;
};
mkdirp(self.config.path, async (err) =>
{
if (err)
{
reject(err);
return;
}
self.users = new UsersRepository(initStore('users.db'));
self.codes = new CodesRepository(initStore('codes.db'));
self.uploads = new UploadsRepository(initStore('uploads.db'));
await self.users.init();
resolve();
});
});
}
}
module.exports = Repository;