mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-22 22:49:45 +01:00
feat: make db migration on-demand instead of automatic
This commit is contained in:
@@ -26,6 +26,7 @@ import NoteHistory from "../collections/note-history";
|
|||||||
import MFAManager from "./mfa-manager";
|
import MFAManager from "./mfa-manager";
|
||||||
import EventManager from "../utils/event-manager";
|
import EventManager from "../utils/event-manager";
|
||||||
import Pricing from "./pricing";
|
import Pricing from "./pricing";
|
||||||
|
import { logger } from "../logger";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {EventSource}
|
* @type {EventSource}
|
||||||
@@ -125,9 +126,11 @@ class Database {
|
|||||||
await this.settings.init();
|
await this.settings.init();
|
||||||
await this.outbox.init();
|
await this.outbox.init();
|
||||||
await this.user.init();
|
await this.user.init();
|
||||||
|
|
||||||
await this.migrations.init();
|
await this.migrations.init();
|
||||||
await this.migrations.migrate();
|
|
||||||
|
if (this.migrations.required()) {
|
||||||
|
logger.warn("Database migration is required.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnectSSE() {
|
disconnectSSE() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { CURRENT_DATABASE_VERSION, EVENTS } from "../common";
|
import { CURRENT_DATABASE_VERSION } from "../common";
|
||||||
import Migrator from "../database/migrator";
|
import Migrator from "../database/migrator";
|
||||||
|
|
||||||
class Migrations {
|
class Migrations {
|
||||||
@@ -18,14 +18,13 @@ class Migrations {
|
|||||||
this._db.storage.write("v", this.dbVersion);
|
this._db.storage.write("v", this.dbVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
async migrate() {
|
required() {
|
||||||
if (this.dbVersion >= CURRENT_DATABASE_VERSION || this._isMigrating) return;
|
return this.dbVersion < CURRENT_DATABASE_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
async migrate() {
|
||||||
|
if (!this.required() || this._isMigrating) return;
|
||||||
this._isMigrating = true;
|
this._isMigrating = true;
|
||||||
this._db.eventManager.publish(EVENTS.databaseMigrating, {
|
|
||||||
from: this.dbVersion,
|
|
||||||
to: CURRENT_DATABASE_VERSION,
|
|
||||||
});
|
|
||||||
|
|
||||||
await this._db.notes.init();
|
await this._db.notes.init();
|
||||||
const content = await this._db.content.all();
|
const content = await this._db.content.all();
|
||||||
@@ -64,11 +63,7 @@ class Migrations {
|
|||||||
];
|
];
|
||||||
await this._migrator.migrate(collections, (item) => item, this.dbVersion);
|
await this._migrator.migrate(collections, (item) => item, this.dbVersion);
|
||||||
await this._db.storage.write("v", CURRENT_DATABASE_VERSION);
|
await this._db.storage.write("v", CURRENT_DATABASE_VERSION);
|
||||||
|
this.dbVersion = CURRENT_DATABASE_VERSION;
|
||||||
setTimeout(() => {
|
|
||||||
this._db.eventManager.publish(EVENTS.databaseMigrated);
|
|
||||||
this.dbVersion = CURRENT_DATABASE_VERSION;
|
|
||||||
}, 5000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default Migrations;
|
export default Migrations;
|
||||||
|
|||||||
@@ -51,8 +51,6 @@ export const EVENTS = {
|
|||||||
databaseSyncRequested: "db:syncRequested",
|
databaseSyncRequested: "db:syncRequested",
|
||||||
syncProgress: "sync:progress",
|
syncProgress: "sync:progress",
|
||||||
syncCompleted: "sync:completed",
|
syncCompleted: "sync:completed",
|
||||||
databaseMigrated: "db:migrated",
|
|
||||||
databaseMigrating: "db:migrating",
|
|
||||||
databaseUpdated: "db:updated",
|
databaseUpdated: "db:updated",
|
||||||
databaseCollectionInitiated: "db:collectionInitiated",
|
databaseCollectionInitiated: "db:collectionInitiated",
|
||||||
appRefreshRequested: "app:refreshRequested",
|
appRefreshRequested: "app:refreshRequested",
|
||||||
|
|||||||
Reference in New Issue
Block a user