const assert = require('assert');
|
const _ = require('lodash');
|
const DB = {};
|
|
// jsondb 要么每次new对象,要么所有地方都用同一个实例,否则会出现数据无法刷新的情况
|
|
DB.connection = function (database, options = {}) {
|
let driver = options.driver || 'jsondb';
|
|
// 兼容之前api
|
driver = driver == 'lowdb' ? 'jsondb' : driver;
|
|
let opt = options.default || {};
|
if (!_.includes(['jsondb', 'sqlite'], driver)) {
|
assert(database, `db driver ${driver} is not supported`);
|
}
|
if (_.isEmpty(database)) {
|
assert(database, `db name ${database} Cannot be empty`);
|
}
|
let storage;
|
switch (driver) {
|
case 'jsondb':
|
const JsondbStorage = require('./jsondbStorage');
|
storage = new JsondbStorage(database);
|
break;
|
case 'sqlite':
|
const SqliteStorage = require('./sqliteStorage');
|
storage = new SqliteStorage(database, opt);
|
break;
|
default:
|
}
|
|
return storage;
|
}
|
|
// 兼容之前的api
|
DB.JsonDB = DB;
|
|
module.exports = DB;
|