From 77efdda5f39836ca2dd596418300e9b62847e5b0 Mon Sep 17 00:00:00 2001 From: titver968 Date: Thu, 27 Nov 2025 15:29:40 +0100 Subject: [PATCH] neue prisma.schema --- prisma/schema.prisma | 50 ++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 0459d30..a1805b4 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,7 +1,6 @@ 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"] - output = "../node_modules/.prisma/client" } datasource db { @@ -25,28 +24,25 @@ model EmailConfig { model Dienststelle { id Int @id @default(autoincrement()) name String @unique - plaetze Int @default(0) // Standard-Plätze, wird nicht mehr direkt verwendet + plaetze Int @default(0) anmeldungenWunsch1 Anmeldung[] @relation("Wunsch1") anmeldungenWunsch2 Anmeldung[] @relation("Wunsch2") anmeldungenWunsch3 Anmeldung[] @relation("Wunsch3") zugewiesene Anmeldung[] @relation("Zugewiesen") - // Neue Relation zu ZeitraumPlaetze zeitraumPlaetze ZeitraumPlaetze[] } model Praktikumszeitraum { id Int @id @default(autoincrement()) - bezeichnung String @unique // z. B. "Frühjahr 2025" + bezeichnung String @unique startDatum DateTime endDatum DateTime anmeldungen Anmeldung[] @relation("PraktikumszeitraumAnmeldungen") - // Neue Relation zu ZeitraumPlaetze zeitraumPlaetze ZeitraumPlaetze[] } -// Neue Zwischentabelle für Plätze pro Zeitraum und Dienststelle model ZeitraumPlaetze { id Int @id @default(autoincrement()) zeitraumId Int @@ -56,19 +52,17 @@ model ZeitraumPlaetze { zeitraum Praktikumszeitraum @relation(fields: [zeitraumId], references: [id], onDelete: Cascade) dienststelle Dienststelle @relation(fields: [dienststelleId], references: [id], onDelete: Cascade) - // Unique constraint: Pro Zeitraum und Dienststelle nur ein Eintrag @@unique([zeitraumId, dienststelleId]) @@index([zeitraumId]) @@index([dienststelleId]) @@map("zeitraum_plaetze") } -// Erweiterte Status-Enum für bessere Nachverfolgung enum Status { - OFFEN // pending - neu eingegangen - BEARBEITUNG // processing - wird gerade bearbeitet - ANGENOMMEN // accepted - wurde angenommen - ABGELEHNT // rejected - wurde abgelehnt + OFFEN + BEARBEITUNG + ANGENOMMEN + ABGELEHNT } model Anmeldung { @@ -76,30 +70,27 @@ model Anmeldung { anrede String vorname String nachname String - geburtsdatum String // Neu hinzugefügt - strasse String // Neu hinzugefügt - hausnummer String // Neu hinzugefügt - ort String // Neu hinzugefügt - plz String // Neu hinzugefügt - telefon String // Neu hinzugefügt + geburtsdatum String + strasse String + hausnummer String + ort String + plz String + telefon String email String - schulart String // Neu hinzugefügt - schulklasse String? // Neu hinzugefügt - noteDeutsch Int // Geändert von String zu Int - noteMathe Int // Geändert von String zu Int + schulart String + schulklasse String? + noteDeutsch Int + noteMathe Int sozialverhalten String? - motivation String? // Neu hinzugefügt - alter Int? // Neu hinzugefügt für Altersvalidierung + motivation String? + alter Int? status Status @default(OFFEN) - // Neue Felder für Status-Tracking - processedAt DateTime? // Wann wurde sie bearbeitet + processedAt DateTime? - // Praktikumszeitraum Relation praktikumId Int? praktikum Praktikumszeitraum? @relation("PraktikumszeitraumAnmeldungen", fields: [praktikumId], references: [id]) - // Dienststellen Relationen zugewiesenId Int? zugewiesen Dienststelle? @relation("Zugewiesen", fields: [zugewiesenId], references: [id]) wunsch1Id Int? @@ -112,7 +103,6 @@ model Anmeldung { timestamp DateTime @default(now()) pdfs PdfDatei[] - // Indizes für bessere Performance @@index([status]) @@index([processedAt]) @@index([zugewiesenId]) @@ -124,4 +114,4 @@ model PdfDatei { pfad String anmeldung Anmeldung @relation(fields: [anmeldungId], references: [id], onDelete: Cascade) anmeldungId Int -} \ No newline at end of file +}