diff options
author | kumavis <aaron@kumavis.me> | 2017-01-12 18:24:33 +0800 |
---|---|---|
committer | kumavis <aaron@kumavis.me> | 2017-01-12 18:24:33 +0800 |
commit | 80514d73b5bc6887cea877194091c941cfb9a8e6 (patch) | |
tree | 24e051368ffe23fdc126ae30407f79febb4a7760 /app/scripts/lib | |
parent | b33c51c0a6c7c8a7b0c0a9a6ca101f874f2db3d1 (diff) | |
download | tangerine-wallet-browser-80514d73b5bc6887cea877194091c941cfb9a8e6.tar.gz tangerine-wallet-browser-80514d73b5bc6887cea877194091c941cfb9a8e6.tar.zst tangerine-wallet-browser-80514d73b5bc6887cea877194091c941cfb9a8e6.zip |
migrations - wip - 005 multivault migration
Diffstat (limited to 'app/scripts/lib')
-rw-r--r-- | app/scripts/lib/migrations.js | 18 | ||||
-rw-r--r-- | app/scripts/lib/migrator/index.js | 19 |
2 files changed, 14 insertions, 23 deletions
diff --git a/app/scripts/lib/migrations.js b/app/scripts/lib/migrations.js deleted file mode 100644 index 12f60def1..000000000 --- a/app/scripts/lib/migrations.js +++ /dev/null @@ -1,18 +0,0 @@ -/* The migrator has two methods the user should be concerned with: - * - * getData(), which returns the app-consumable data object - * saveData(), which persists the app-consumable data object. - */ - -// Migrations must start at version 1 or later. -// They are objects with a `version` number -// and a `migrate` function. -// -// The `migrate` function receives the previous -// config data format, and returns the new one. - -module.exports = [ - require('../migrations/002'), - require('../migrations/003'), - require('../migrations/004'), -] diff --git a/app/scripts/lib/migrator/index.js b/app/scripts/lib/migrator/index.js index 02d8c2335..ab5a757b3 100644 --- a/app/scripts/lib/migrator/index.js +++ b/app/scripts/lib/migrator/index.js @@ -7,22 +7,31 @@ class Migrator { this.migrations = migrations.sort((a, b) => a.version - b.version) let lastMigration = this.migrations.slice(-1)[0] // use specified defaultVersion or highest migration version - this.defaultVersion = opts.defaultVersion || lastMigration && lastMigration.version || 0 + this.defaultVersion = opts.defaultVersion || (lastMigration && lastMigration.version) || 0 } // run all pending migrations on meta in place - migrateData (meta = { version: this.defaultVersion }) { + migrateData (versionedData = this.generateInitialState()) { let remaining = this.migrations.filter(migrationIsPending) return ( - asyncQ.eachSeries(remaining, (migration) => migration.migrate(meta)) - .then(() => meta) + asyncQ.eachSeries(remaining, (migration) => migration.migrate(versionedData)) + .then(() => versionedData) ) // migration is "pending" if hit has a higher // version number than currentVersion function migrationIsPending(migration) { - return migration.version > meta.version + return migration.version > versionedData.meta.version + } + } + + generateInitialState (initState) { + return { + meta: { + version: this.defaultVersion, + }, + data: initState, } } |