Claude c1c39b6e46
feat(media): space-scoped Media Studio repositories
Sources, assets with keyset search, analyses, segments, uploads,
collections with re-clustering, people with consent and complete
biometric removal, marks, brand kits, projects with versioned plans,
renders with atomic claims, publications, metrics and the funnel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0138YqDj3ttfayRwuMKKrqVj
2026-10-03 17:55:49 +00:00

33 lines
1.2 KiB
TypeScript

import type { PrismaClient } from "./client.js";
import { createMediaCollectionRepos } from "./media-collections.js";
import { createMediaLibraryRepos } from "./media-library.js";
import { createMediaPeopleRepos } from "./media-people.js";
import { createMediaProjectRepos } from "./media-projects.js";
import { createMediaPublishingRepos } from "./media-publishing.js";
import { createMediaUploadRepos } from "./media-uploads.js";
export * from "./media-collections.js";
export * from "./media-library.js";
export * from "./media-people.js";
export * from "./media-projects.js";
export * from "./media-publishing.js";
export * from "./media-shared.js";
export * from "./media-uploads.js";
/*
* Media Studio persistence. Every function takes the space explicitly and never reads
* or writes another space's rows; a foreign or missing id is an IsolationError.
*/
export function createMediaRepos(prisma: PrismaClient) {
return {
...createMediaLibraryRepos(prisma),
...createMediaUploadRepos(prisma),
...createMediaCollectionRepos(prisma),
...createMediaPeopleRepos(prisma),
...createMediaProjectRepos(prisma),
...createMediaPublishingRepos(prisma),
};
}
export type MediaRepos = ReturnType<typeof createMediaRepos>;