mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
29 lines
601 B
TypeScript
29 lines
601 B
TypeScript
import { v2ToV3 } from './v2-to-v3';
|
|||
|
|
|
||
|
|
type MigrationFn = ({ state }: { state: unknown }) => unknown;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* key = version we're migrating from
|
||
|
|
* value = migration function
|
||
|
|
*/
|
||
|
|
const migrations: Record<number, MigrationFn> = {
|
||
|
|
2: v2ToV3,
|
||
|
|
};
|
||
|
|
|
||
|
|
export const CURRENT_VERSION = 3;
|
||
|
|
|
||
|
|
export function runMigrations({
|
||
|
|
state,
|
||
|
|
fromVersion,
|
||
|
|
}: {
|
||
|
|
state: unknown;
|
||
|
|
fromVersion: number;
|
||
|
|
}): unknown {
|
||
|
|
let current = state;
|
||
|
|
for (let version = fromVersion; version < CURRENT_VERSION; version++) {
|
||
|
|
const migrate = migrations[version];
|
||
|
|
if (migrate) current = migrate({ state: current });
|
||
|
|
}
|
||
|
|
return current;
|
||
|
|
}
|