UNPKG

strata-storage

Version:

Zero-dependency universal storage plugin providing a unified API for all storage operations across web, Android, and iOS platforms

44 lines (43 loc) 1.54 kB
/** * Migration utilities for storage upgrades */ export class MigrationManager { migrations = []; register(migration) { this.migrations.push(migration); this.migrations.sort((a, b) => a.version - b.version); } async migrate(adapter, targetVersion) { const currentVersion = await this.getCurrentVersion(adapter); if (currentVersion === targetVersion) return; const migrationsToRun = this.migrations.filter((m) => currentVersion < targetVersion ? m.version > currentVersion && m.version <= targetVersion : m.version <= currentVersion && m.version > targetVersion); if (currentVersion < targetVersion) { for (const migration of migrationsToRun) { await migration.up(adapter); await this.setVersion(adapter, migration.version); } } else { for (const migration of migrationsToRun.reverse()) { if (migration.down) { await migration.down(adapter); } await this.setVersion(adapter, migration.version - 1); } } } async getCurrentVersion(adapter) { const versionData = await adapter.get('__strata_version__'); return versionData?.value || 0; } async setVersion(adapter, version) { await adapter.set('__strata_version__', { value: version, created: Date.now(), updated: Date.now(), }); } }