REFACTORED - migrate the data layer from Prisma to Drizzle (unify the stack)
- 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)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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];
|
||||
Reference in New Issue
Block a user