- Add lib/db (Drizzle schema: 7 tables + 6 enums + relations, postgres.js client), drizzle.config.ts, lib/db/enums.ts (Prisma-compatible enum objects) - Rewrite all 14 app consumers + 4 admin components to Drizzle - Move the test DB layer to Drizzle + in-process PGlite; convert all 8 integration test files + factories (371 tests green) - Remove Prisma: deps, prisma/ schema+migrations, lib/prisma.ts, Dockerfile prisma generate; wire db:generate/migrate/push/studio to drizzle-kit; update Makefile - Preserve the old seed as scripts/legacy-prisma-seed.cjs (needs a Drizzle rewrite)
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import {
|
|
mediaKind,
|
|
mediaSource,
|
|
mediaUsageType,
|
|
portfolioAssetKind,
|
|
portfolioProjectViewMode,
|
|
portfolioSectionType,
|
|
} from "./schema";
|
|
|
|
/**
|
|
* Prisma-compatible enum objects + types, derived from the Drizzle pgEnums, so
|
|
* existing consumers can keep writing `MediaKind.IMAGE` (value) and `: MediaKind`
|
|
* (type) — only the import path changes from `@prisma/client` to `@/lib/db/enums`.
|
|
*/
|
|
function asEnum<T extends string>(values: readonly T[]): { [K in T]: K } {
|
|
return Object.fromEntries(values.map((v) => [v, v])) as { [K in T]: K };
|
|
}
|
|
|
|
export const MediaKind = asEnum(mediaKind.enumValues);
|
|
export type MediaKind = (typeof mediaKind.enumValues)[number];
|
|
|
|
export const MediaSource = asEnum(mediaSource.enumValues);
|
|
export type MediaSource = (typeof mediaSource.enumValues)[number];
|
|
|
|
export const MediaUsageType = asEnum(mediaUsageType.enumValues);
|
|
export type MediaUsageType = (typeof mediaUsageType.enumValues)[number];
|
|
|
|
export const PortfolioAssetKind = asEnum(portfolioAssetKind.enumValues);
|
|
export type PortfolioAssetKind = (typeof portfolioAssetKind.enumValues)[number];
|
|
|
|
export const PortfolioProjectViewMode = asEnum(portfolioProjectViewMode.enumValues);
|
|
export type PortfolioProjectViewMode = (typeof portfolioProjectViewMode.enumValues)[number];
|
|
|
|
export const PortfolioSectionType = asEnum(portfolioSectionType.enumValues);
|
|
export type PortfolioSectionType = (typeof portfolioSectionType.enumValues)[number];
|