This commit was merged in pull request #59.
This commit is contained in:
@@ -134,6 +134,7 @@ model Kunde {
|
||||
benutzerbindungen BenutzerKunde[]
|
||||
geraete Geraet[]
|
||||
laeufe Lauf[]
|
||||
anhaenge Anhang[]
|
||||
mitarbeiter Mitarbeiter[]
|
||||
protokolle Protokoll[]
|
||||
verzeichnisquellen Verzeichnisquelle[]
|
||||
@@ -172,6 +173,7 @@ model Benutzer {
|
||||
protokolle Protokoll[]
|
||||
schrittergebnisse Schrittergebnis[]
|
||||
veroeffentlichteVersionen VorlagenVersion[] @relation("VersionVeroeffentlichtVon")
|
||||
anhaenge Anhang[]
|
||||
|
||||
@@index([aktiv])
|
||||
@@index([rolle])
|
||||
@@ -635,7 +637,10 @@ model Lauf {
|
||||
ergebnisse Schrittergebnis[]
|
||||
kommentare Kommentar[]
|
||||
protokolle Protokoll[]
|
||||
anhaenge Anhang[]
|
||||
|
||||
/// Schluesselkandidat fuer den zusammengesetzten Fremdschluessel von Anhang.
|
||||
@@unique([id, kundeId])
|
||||
@@index([kundeId, status])
|
||||
@@index([geraetId, status])
|
||||
@@index([mitarbeiterId])
|
||||
@@ -665,11 +670,52 @@ model Schrittergebnis {
|
||||
/// Codepfad darf annehmen, dass immer ein Mensch dahintersteht.
|
||||
aktualisiertVon Benutzer? @relation(fields: [aktualisiertVonId], references: [id], onDelete: Restrict)
|
||||
kommentare Kommentar[]
|
||||
anhaenge Anhang[]
|
||||
|
||||
@@unique([laufId, vorlagenSchrittId])
|
||||
/// Schluesselkandidat fuer den zusammengesetzten Fremdschluessel von Anhang.
|
||||
@@unique([id, laufId])
|
||||
@@index([laufId, zustand])
|
||||
}
|
||||
|
||||
/// Eine Datei oder ein Foto an einem Schritt (#032).
|
||||
///
|
||||
/// Die Datei selbst liegt im Dateisystem unter `ANHAENGE_PFAD`; hier stehen nur
|
||||
/// die Metadaten. Gegen `bytea` spricht die Sicherung: ein `pg_dump` mit Fotos
|
||||
/// ist nach einem Jahr kein `pg_dump` mehr, das jemand einspielt. **Folge:** die
|
||||
/// Sicherung muss Datenbank **und** Verzeichnis mitnehmen, siehe
|
||||
/// `docs/betrieb/sicherung.md`.
|
||||
model Anhang {
|
||||
id String @id @default(cuid())
|
||||
schrittergebnisId String
|
||||
laufId String
|
||||
/// Jede kundenbezogene Zeile traegt kundeId (CLAUDE.md). Die Mandantengrenze
|
||||
/// steht zusaetzlich als zusammengesetzter Fremdschluessel in der Migration.
|
||||
kundeId String
|
||||
/// Der Name, den der Browser mitgeschickt hat – nur zur Anzeige. Der Pfad auf
|
||||
/// der Platte entsteht aus `id`, damit kein Dateiname von aussen einen Pfad
|
||||
/// bestimmt.
|
||||
dateiname String
|
||||
medientyp String
|
||||
groesse Int
|
||||
/// SHA-256 der Datei. Beantwortet nach einer Ruecksicherung die Frage, ob die
|
||||
/// Datei noch die ist, die hier beschrieben steht.
|
||||
pruefsumme String
|
||||
erstelltVonId String?
|
||||
erstelltAm DateTime @default(now())
|
||||
|
||||
schrittergebnis Schrittergebnis @relation(fields: [schrittergebnisId], references: [id], onDelete: Cascade)
|
||||
lauf Lauf @relation(fields: [laufId], references: [id], onDelete: Restrict)
|
||||
kunde Kunde @relation(fields: [kundeId], references: [id], onDelete: Restrict)
|
||||
/// Leer bei einem Systemlauf – kein Codepfad nimmt an, dass ein Mensch
|
||||
/// dahintersteht.
|
||||
erstelltVon Benutzer? @relation(fields: [erstelltVonId], references: [id], onDelete: Restrict)
|
||||
|
||||
@@index([schrittergebnisId])
|
||||
@@index([laufId])
|
||||
@@index([kundeId])
|
||||
}
|
||||
|
||||
model Kommentar {
|
||||
id String @id @default(cuid())
|
||||
laufId String
|
||||
|
||||
Reference in New Issue
Block a user