summaryrefslogtreecommitdiff
path: root/apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-02-05 12:53:56 +0100
committerMaze Winther <mazewinther@gmail.com>2026-02-05 12:53:56 +0100
commit2257ca2e6f9f8834880ea9bab4355c168ee6c33b (patch)
treef2ead774beda94d95fb771bc3eb16972fb08468a /apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts
parent490fc170c0705703728a889cbc35a04ca41ae7eb (diff)
downloadopencut-2257ca2e6f9f8834880ea9bab4355c168ee6c33b.tar.gz
make storage versioning per-project + few other refactors
Diffstat (limited to 'apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts')
-rw-r--r--apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts38
1 files changed, 3 insertions, 35 deletions
diff --git a/apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts b/apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts
index b4ed5a9f..0e5ffbf7 100644
--- a/apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts
+++ b/apps/web/src/services/storage/migrations/transformers/v1-to-v2.ts
@@ -15,6 +15,7 @@ import type {
VideoElement,
} from "@/types/timeline";
import type { MigrationResult, ProjectRecord } from "./types";
+import { getProjectId, isRecord } from "./utils";
interface LegacyTimelineData {
tracks: unknown[];
@@ -51,10 +52,8 @@ interface LegacyMediaTrack {
export interface TransformV1ToV2Options {
loadMediaAsset?: ({
- projectId,
mediaId,
}: {
- projectId: string;
mediaId: string;
}) => Promise<MediaAssetData | null>;
}
@@ -91,10 +90,8 @@ async function migrateProject({
project: ProjectRecord;
projectId: string;
loadMediaAsset?: ({
- projectId,
mediaId,
}: {
- projectId: string;
mediaId: string;
}) => Promise<MediaAssetData | null>;
}): Promise<ProjectRecord> {
@@ -261,10 +258,8 @@ async function transformTracks({
tracks: unknown[];
projectId: string;
loadMediaAsset?: ({
- projectId,
mediaId,
}: {
- projectId: string;
mediaId: string;
}) => Promise<MediaAssetData | null>;
}): Promise<TimelineTrack[]> {
@@ -318,10 +313,8 @@ async function transformMediaTrack({
track: LegacyMediaTrack;
projectId: string;
loadMediaAsset?: ({
- projectId,
mediaId,
}: {
- projectId: string;
mediaId: string;
}) => Promise<MediaAssetData | null>;
isMain: boolean;
@@ -342,7 +335,7 @@ async function transformMediaTrack({
let mediaType: "video" | "image" = "video";
if (loadMediaAsset) {
- const mediaAsset = await loadMediaAsset({ projectId, mediaId });
+ const mediaAsset = await loadMediaAsset({ mediaId });
if (mediaAsset) {
mediaType = mediaAsset.type === "image" ? "image" : "video";
}
@@ -543,28 +536,7 @@ function transformAudioTrack({
};
}
-export 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;
-}
+export { getProjectId } from "./utils";
function getCurrentSceneId({
value,
@@ -772,7 +744,3 @@ function isV2Project({ project }: { project: ProjectRecord }): boolean {
return isRecord(project.metadata) && isRecord(project.settings);
}
-
-function isRecord(value: unknown): value is ProjectRecord {
- return typeof value === "object" && value !== null;
-}