generator client { provider = "prisma-client-js" binaryTargets = ["darwin-arm64", "linux-arm64-openssl-3.0.x", "debian-openssl-3.0.x", "linux-musl-openssl-3.0.x"] } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model Admin { id Int @id @default(1) password String } model EmailConfig { id Int @id @default(1) subject String @default("Praktikumsplatz-Zusage") template String @default("Sehr geehrte/r {anrede} {nachname},\n\nwir freuen uns, Ihnen mitteilen zu können, dass Ihre Bewerbung für ein Praktikum erfolgreich war.\n\nSie wurden für das Praktikum bei folgender Dienststelle angenommen:\n{dienststelle}\n\nWeitere Informationen erhalten Sie in den kommenden Tagen.\n\nMit freundlichen Grüßen\nIhr Praktikumsteam") @@map("email_config") } model Dienststelle { id Int @id @default(autoincrement()) name String @unique plaetze Int @default(0) anmeldungenWunsch1 Anmeldung[] @relation("Wunsch1") anmeldungenWunsch2 Anmeldung[] @relation("Wunsch2") anmeldungenWunsch3 Anmeldung[] @relation("Wunsch3") zugewiesene Anmeldung[] @relation("Zugewiesen") zeitraumPlaetze ZeitraumPlaetze[] } model Praktikumszeitraum { id Int @id @default(autoincrement()) bezeichnung String @unique startDatum DateTime endDatum DateTime anmeldungen Anmeldung[] @relation("PraktikumszeitraumAnmeldungen") zeitraumPlaetze ZeitraumPlaetze[] } model ZeitraumPlaetze { id Int @id @default(autoincrement()) zeitraumId Int dienststelleId Int plaetze Int @default(0) zeitraum Praktikumszeitraum @relation(fields: [zeitraumId], references: [id], onDelete: Cascade) dienststelle Dienststelle @relation(fields: [dienststelleId], references: [id], onDelete: Cascade) @@unique([zeitraumId, dienststelleId]) @@index([zeitraumId]) @@index([dienststelleId]) @@map("zeitraum_plaetze") } enum Status { OFFEN BEARBEITUNG ANGENOMMEN ABGELEHNT } model Anmeldung { id Int @id @default(autoincrement()) anrede String vorname String nachname String geburtsdatum String strasse String hausnummer String ort String plz String telefon String email String schulart String schulklasse String? noteDeutsch Int noteMathe Int sozialverhalten String? motivation String? alter Int? status Status @default(OFFEN) processedAt DateTime? praktikumId Int? praktikum Praktikumszeitraum? @relation("PraktikumszeitraumAnmeldungen", fields: [praktikumId], references: [id]) zugewiesenId Int? zugewiesen Dienststelle? @relation("Zugewiesen", fields: [zugewiesenId], references: [id]) wunsch1Id Int? wunsch1 Dienststelle? @relation("Wunsch1", fields: [wunsch1Id], references: [id]) wunsch2Id Int? wunsch2 Dienststelle? @relation("Wunsch2", fields: [wunsch2Id], references: [id]) wunsch3Id Int? wunsch3 Dienststelle? @relation("Wunsch3", fields: [wunsch3Id], references: [id]) timestamp DateTime @default(now()) pdfs PdfDatei[] @@index([status]) @@index([processedAt]) @@index([zugewiesenId]) @@map("anmeldungen") } model PdfDatei { id Int @id @default(autoincrement()) pfad String anmeldung Anmeldung @relation(fields: [anmeldungId], references: [id], onDelete: Cascade) anmeldungId Int }