diff options
Diffstat (limited to 'apps/web/src/services/storage/migrations/transformers')
4 files changed, 35 insertions, 87 deletions
diff --git a/apps/web/src/services/storage/migrations/transformers/utils.ts b/apps/web/src/services/storage/migrations/transformers/utils.ts new file mode 100644 index 00000000..108489bf --- /dev/null +++ b/apps/web/src/services/storage/migrations/transformers/utils.ts @@ -0,0 +1,28 @@ +import type { ProjectRecord } from "./types"; + +export function isRecord(value: unknown): value is ProjectRecord { + return typeof value === "object" && value !== null; +} + +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; +} diff --git a/apps/web/src/services/storage/migrations/transformers/v0-to-v1.ts b/apps/web/src/services/storage/migrations/transformers/v0-to-v1.ts index a2350acb..e8183297 100644 --- a/apps/web/src/services/storage/migrations/transformers/v0-to-v1.ts +++ b/apps/web/src/services/storage/migrations/transformers/v0-to-v1.ts @@ -1,6 +1,7 @@ import { generateUUID } from "@/utils/id"; import type { SerializedScene } from "@/services/storage/types"; import type { MigrationResult, ProjectRecord } from "./types"; +import { getProjectId, isRecord } from "./utils"; export interface TransformV0ToV1Options { now?: Date; @@ -54,29 +55,4 @@ export function transformProjectV0ToV1({ return { project: updatedProject, skipped: false }; } -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; -} - -function isRecord(value: unknown): value is ProjectRecord { - return typeof value === "object" && value !== null; -} +export { getProjectId } from "./utils"; 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; -} diff --git a/apps/web/src/services/storage/migrations/transformers/v2-to-v3.ts b/apps/web/src/services/storage/migrations/transformers/v2-to-v3.ts index 33656109..094b8bd8 100644 --- a/apps/web/src/services/storage/migrations/transformers/v2-to-v3.ts +++ b/apps/web/src/services/storage/migrations/transformers/v2-to-v3.ts @@ -1,6 +1,7 @@ import { getProjectDurationFromScenes } from "@/lib/scenes"; import type { TScene } from "@/types/timeline"; import type { MigrationResult, ProjectRecord } from "./types"; +import { getProjectId, isRecord } from "./utils"; export function transformProjectV2ToV3({ project, @@ -33,28 +34,7 @@ export function transformProjectV2ToV3({ return { project: migratedProject, skipped: false }; } -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 getScenes({ project }: { project: ProjectRecord }): TScene[] { const scenesValue = project.scenes; @@ -75,7 +55,3 @@ function isV3Project({ project }: { project: ProjectRecord }): boolean { isRecord(project.metadata) && typeof project.metadata.duration === "number" ); } - -function isRecord(value: unknown): value is ProjectRecord { - return typeof value === "object" && value !== null; -} |
