From c2f53bcf37f611e32c79c7191bc76274d2e108a7 Mon Sep 17 00:00:00 2001 From: yoshinorin Date: Tue, 12 Apr 2022 22:37:55 +0900 Subject: [PATCH] feat: add skip `load` and `save` option --- lib/database.js | 14 ++++++++++---- test/scripts/database.js | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/database.js b/lib/database.js index 4ab5265b..ba98d645 100644 --- a/lib/database.js +++ b/lib/database.js @@ -73,8 +73,8 @@ class Database { this.options = Object.assign({ version: 0, onUpgrade() {}, - - onDowngrade() {} + onDowngrade() {}, + dump: true }, options); this._models = {}; @@ -110,9 +110,12 @@ class Database { * @return {Promise} */ load(callback) { - const { path, onUpgrade, onDowngrade, version: newVersion } = this.options; + const { path, onUpgrade, onDowngrade, version: newVersion, dump } = this.options; if (!path) throw new WarehouseError('options.path is required'); + if (!dump) { + return Promise.resolve().asCallback(callback); + } let oldVersion = 0; @@ -150,9 +153,12 @@ class Database { * @return {Promise} */ save(callback) { - const { path } = this.options; + const { path, dump } = this.options; if (!path) throw new WarehouseError('options.path is required'); + if (!dump) { + return Promise.resolve().asCallback(callback); + } return Promise.resolve(exportAsync(this, path)).asCallback(callback); } diff --git a/test/scripts/database.js b/test/scripts/database.js index 30001e87..67f3f902 100644 --- a/test/scripts/database.js +++ b/test/scripts/database.js @@ -85,6 +85,16 @@ describe('Database', () => { }); }); + it('load() - without dump', () => { + const db = new Database({path: DB_PATH, dump: false}); + + return db.load().then(() => { + const Test = db.model('Test'); + + Test.toArray().should.eql([]); + }); + }); + it('save()', () => db.save().then(() => fs.readFileAsync(DB_PATH, 'utf8')).then(data => { const json = JSON.parse(data); @@ -101,4 +111,12 @@ describe('Database', () => { ] }); })); + + it('save() - without dump', () => { + const DB_PATH = path.join(path.dirname(__dirname), 'fixtures', 'db-without-dump.json'); + const db = new Database({path: DB_PATH, dump: false}); + + db.save(); + fs.existsSync(DB_PATH).should.eql(false); + }); });