Close database after migration
This is not 100% reliable as database connections are closed in a separate
thread according to the documentation:
- https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/close
- https://stackoverflow.com/a/18639298
- 80c7a06d5c/backbone-indexeddb.js (L558-L565)
This commit is contained in:
@@ -2,13 +2,19 @@ const isFunction = require('lodash/isFunction');
|
||||
const isObject = require('lodash/isObject');
|
||||
const isString = require('lodash/isString');
|
||||
|
||||
const { deferredToPromise } = require('../deferred_to_promise');
|
||||
|
||||
exports.runMigrations = ({ Backbone, database } = {}) => {
|
||||
|
||||
exports.runMigrations = async ({ Backbone, closeDatabase, database } = {}) => {
|
||||
if (!isObject(Backbone) || !isObject(Backbone.Collection) ||
|
||||
!isFunction(Backbone.Collection.extend)) {
|
||||
throw new TypeError('"Backbone" is required');
|
||||
}
|
||||
|
||||
if (!isFunction(closeDatabase)) {
|
||||
throw new TypeError('"closeDatabase" is required');
|
||||
}
|
||||
|
||||
if (!isObject(database) || !isString(database.id) ||
|
||||
!Array.isArray(database.migrations)) {
|
||||
throw new TypeError('"database" is required');
|
||||
@@ -19,9 +25,7 @@ exports.runMigrations = ({ Backbone, database } = {}) => {
|
||||
storeName: 'items',
|
||||
}))();
|
||||
|
||||
return new Promise((resolve) => {
|
||||
// NOTE: This `then` refers to a jQuery `Deferred`:
|
||||
// eslint-disable-next-line more/no-then
|
||||
migrationCollection.fetch().then(() => resolve());
|
||||
});
|
||||
await deferredToPromise(migrationCollection.fetch());
|
||||
await closeDatabase();
|
||||
return;
|
||||
};
|
||||
|
Reference in New Issue
Block a user