diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-02-01 17:01:59 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-02-01 17:01:59 +0100 |
| commit | 7d5914353b8f78652f12b880fcd16c5ab82b3769 (patch) | |
| tree | 84d4c6ef4f9a0d735271706a25518bdda3bc1791 /apps/web/src/services/storage/migrations/v0-to-v1.ts | |
| parent | ee7eaecc9f2125ac821e9d19bb345c1738ee9a54 (diff) | |
| parent | 22ea6b89256328458bd8d67f6e5a53d9a3623a90 (diff) | |
| download | opencut-7d5914353b8f78652f12b880fcd16c5ab82b3769.tar.gz | |
Merge branch 'staging'
Diffstat (limited to 'apps/web/src/services/storage/migrations/v0-to-v1.ts')
| -rw-r--r-- | apps/web/src/services/storage/migrations/v0-to-v1.ts | 73 |
1 files changed, 9 insertions, 64 deletions
diff --git a/apps/web/src/services/storage/migrations/v0-to-v1.ts b/apps/web/src/services/storage/migrations/v0-to-v1.ts index 4997f3fa..e183ddf2 100644 --- a/apps/web/src/services/storage/migrations/v0-to-v1.ts +++ b/apps/web/src/services/storage/migrations/v0-to-v1.ts @@ -5,12 +5,8 @@ */ import { IndexedDBAdapter } from "@/services/storage/indexeddb-adapter"; -import type { SerializedScene } from "@/services/storage/types"; -import { buildDefaultScene } from "@/lib/scenes"; -import type { TScene } from "@/types/timeline"; import { StorageMigration } from "./base"; - -type ProjectRecord = Record<string, unknown>; +import { getProjectId, transformProjectV0ToV1 } from "./transformers/v0-to-v1"; export class V0toV1Migration extends StorageMigration { from = 0; @@ -25,75 +21,24 @@ export class V0toV1Migration extends StorageMigration { const projects = await projectsAdapter.getAll(); for (const project of projects) { - if (!isRecord(project)) { + if (typeof project !== "object" || project === null) { continue; } - const scenesValue = project.scenes; - if (Array.isArray(scenesValue) && scenesValue.length > 0) { - continue; - } + const result = transformProjectV0ToV1({ + project: project as Record<string, unknown>, + }); - const mainScene = buildDefaultScene({ isMain: true, name: "Main scene" }); - const serializedScene = serializeScene({ scene: mainScene }); - const updatedProject: ProjectRecord = { - ...project, - scenes: [serializedScene], - currentSceneId: mainScene.id, - version: 1, - }; - - const updatedAt = new Date().toISOString(); - if (isRecord(project.metadata)) { - updatedProject.metadata = { - ...project.metadata, - updatedAt, - }; - } else { - updatedProject.updatedAt = updatedAt; + if (result.skipped) { + continue; } - const projectId = getProjectId({ project: updatedProject }); + const projectId = getProjectId({ project: result.project }); if (!projectId) { continue; } - await projectsAdapter.set(projectId, updatedProject); + await projectsAdapter.set(projectId, result.project); } } } - -function serializeScene({ scene }: { scene: TScene }): SerializedScene { - return { - id: scene.id, - name: scene.name, - isMain: scene.isMain, - tracks: scene.tracks, - bookmarks: scene.bookmarks, - createdAt: scene.createdAt.toISOString(), - updatedAt: scene.updatedAt.toISOString(), - }; -} - -function getProjectId({ project }: { project: ProjectRecord }): string | null { - const idValue = project.id; - if (typeof idValue === "string" && idValue.length > 0) { - return idValue; - } - - const metadataValue = project.metadata; - if (!isRecord(metadataValue)) { - return null; - } - - const metadataId = metadataValue.id; - if (typeof metadataId === "string" && metadataId.length > 0) { - return metadataId; - } - - return null; -} - -function isRecord(value: unknown): value is ProjectRecord { - return typeof value === "object" && value !== null; -} |
