praktikum refinemend Plaetze pro Dienstelle und Pro Zeitraum

This commit is contained in:
titver968
2025-11-26 15:27:21 +01:00
parent be9228b71d
commit 89bf0298ce
40 changed files with 2932 additions and 1247 deletions

View File

@@ -6,7 +6,7 @@ generator client {
datasource db {
provider = "sqlite"
url = "file:./praktika.db"
url = env("DATABASE_URL")
}
model Admin {
@@ -25,11 +25,14 @@ model EmailConfig {
model Dienststelle {
id Int @id @default(autoincrement())
name String @unique
plaetze Int @default(0)
plaetze Int @default(0) // Standard-Plätze, wird nicht mehr direkt verwendet
anmeldungenWunsch1 Anmeldung[] @relation("Wunsch1")
anmeldungenWunsch2 Anmeldung[] @relation("Wunsch2")
anmeldungenWunsch3 Anmeldung[] @relation("Wunsch3")
zugewiesene Anmeldung[] @relation("Zugewiesen")
// Neue Relation zu ZeitraumPlaetze
zeitraumPlaetze ZeitraumPlaetze[]
}
model Praktikumszeitraum {
@@ -38,6 +41,26 @@ model Praktikumszeitraum {
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
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 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
@@ -70,7 +93,6 @@ model Anmeldung {
status Status @default(OFFEN)
// Neue Felder für Status-Tracking
// processedBy String? // Wer bearbeitet die Anmeldung
processedAt DateTime? // Wann wurde sie bearbeitet
// Praktikumszeitraum Relation