// Prisma schema — source of truth for the DB schema going forward, // replacing the hand-written `CREATE TABLE IF NOT EXISTS` migration that // used to live in src/lib/db.ts. Only the Request entity (Draft state only) // exists so far — see ../processes/asset-license-management.md for the full // data model / state machine this will grow into. generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } // Fixed, closed set of 2 values tied to the domain (asset vs license // request) — a native Postgres enum is the idiomatic Prisma mapping here. // This replaces the old `type TEXT NOT NULL CHECK (type IN ('asset', // 'license'))` column with `type "RequestType" NOT NULL` backed by a // `CREATE TYPE "RequestType" AS ENUM ('asset', 'license')`. Same validation // guarantee (only these two values are ever storable), different mechanism. // See feature-implementer report for the enum-vs-TEXT+CHECK trade-off. enum RequestType { asset license } model Request { id String @id @default(uuid()) @db.Uuid employeeId String @map("employee_id") type RequestType reason String // Only the 'Draft' state is implemented so far. Deliberately kept as a // plain string (not an enum) until more states exist — see // src/lib/requests.ts's RequestStatus type. status String @default("Draft") createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6) @@map("requests") }