// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } // Auth.js models model Account { id Int @id @default(autoincrement()) user_id Int @map("userId") type String provider String providerAccountId String refresh_token String? @db.Text access_token String? @db.Text expires_at Int? token_type String? scope String? id_token String? @db.Text session_state String? user User @relation(fields: [user_id], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) @@map("accounts") } model User { id Int @id @default(autoincrement()) name String? email String? @unique accounts Account[] EntryVersion EntryVersion[] EntryExecution EntryExecution[] SavedFilter SavedFilter[] @@map("users") } // Visitenbuch models // Hospital station model Station { id Int @id @default(autoincrement()) name String @unique Room Room[] hidden Boolean @default(false) @@map("stations") } // Hospital room model Room { id Int @id @default(autoincrement()) name String @unique station Station @relation(fields: [station_id], references: [id], onDelete: Restrict) station_id Int Patient Patient[] hidden Boolean @default(false) @@map("rooms") } model Patient { id Int @id @default(autoincrement()) first_name String last_name String age Int? room Room? @relation(fields: [room_id], references: [id], onDelete: Restrict) room_id Int? Entry Entry[] hidden Boolean @default(false) created_at DateTime @default(now()) full_name String? @default(dbgenerated("((first_name || ' '::text) || last_name)")) @ignore @@index([full_name(ops: raw("gin_trgm_ops"))], map: "patients_full_name", type: Gin) @@map("patients") } // Entry category (e.g. Blood test, Exams, ...) model Category { id Int @id @default(autoincrement()) name String @unique color String? description String? EntryVersion EntryVersion[] hidden Boolean @default(false) @@map("categories") } model Entry { id Int @id @default(autoincrement()) patient Patient @relation(fields: [patient_id], references: [id], onDelete: Restrict) patient_id Int EntryVersion EntryVersion[] EntryExecution EntryExecution[] created_at DateTime @default(now()) tsvec Unsupported("tsvector")? @@index([tsvec], type: Gin) @@map("entries") } model EntryVersion { id Int @id @default(autoincrement()) entry Entry @relation(fields: [entry_id], references: [id], onDelete: Cascade) entry_id Int text String date DateTime @db.Date category Category? @relation(fields: [category_id], references: [id], onDelete: Restrict) category_id Int? priority Boolean author User @relation(fields: [author_id], references: [id]) author_id Int created_at DateTime @default(now()) @@index([entry_id]) @@map("entry_versions") } model EntryExecution { id Int @id @default(autoincrement()) entry Entry @relation(fields: [entry_id], references: [id], onDelete: Cascade) entry_id Int text String done Boolean @default(true) author User @relation(fields: [author_id], references: [id]) author_id Int created_at DateTime @default(now()) @@index([entry_id]) @@map("entry_executions") } model SavedFilter { id Int @id @default(autoincrement()) user User @relation(fields: [user_id], references: [id]) user_id Int view String name String query String @@map("saved_filter") }