feat(bausteine): Abschnitte, die mehrere Vorlagen teilen (#57)
This commit was merged in pull request #57.
This commit is contained in:
+76
-6
@@ -464,13 +464,83 @@ model VorlagenVariable {
|
||||
}
|
||||
|
||||
model VorlagenAbschnitt {
|
||||
id String @id @default(cuid())
|
||||
versionId String
|
||||
titel String
|
||||
position Int @default(0)
|
||||
id String @id @default(cuid())
|
||||
versionId String
|
||||
titel String
|
||||
position Int @default(0)
|
||||
/// Verweis auf einen wiederverwendbaren Baustein (#030).
|
||||
///
|
||||
/// In einem **Entwurf** heisst das: beim Veroeffentlichen hier die Schritte des
|
||||
/// Bausteins einsetzen. In einer **veroeffentlichten** Version heisst dasselbe
|
||||
/// Feld: diese Schritte stammen von dort — es ist dann nur noch Herkunft.
|
||||
/// Welche der beiden Lesarten gilt, sagt der Status der Version; ein zweites
|
||||
/// Feld dafuer waere eine zweite Wahrheit.
|
||||
bausteinVersionId String?
|
||||
|
||||
version VorlagenVersion @relation(fields: [versionId], references: [id], onDelete: Cascade)
|
||||
schritte VorlagenSchritt[]
|
||||
version VorlagenVersion @relation(fields: [versionId], references: [id], onDelete: Cascade)
|
||||
bausteinVersion BausteinVersion? @relation(fields: [bausteinVersionId], references: [id], onDelete: Restrict)
|
||||
schritte VorlagenSchritt[]
|
||||
|
||||
@@index([versionId, position])
|
||||
@@index([bausteinVersionId])
|
||||
}
|
||||
|
||||
// ---- Bausteine -------------------------------------------------------------
|
||||
|
||||
/// Ein Abschnitt, den mehrere Vorlagen teilen (#030).
|
||||
///
|
||||
/// Versioniert nach denselben Regeln wie eine Vorlage: hoechstens ein Entwurf,
|
||||
/// eine veroeffentlichte Version wird nie veraendert. Beim Veroeffentlichen
|
||||
/// einer Vorlage wird der Baustein **tief kopiert** — ein Lauf sieht damit
|
||||
/// weiterhin konkrete Schritte, und Schrittergebnis, Druckansicht und Archiv
|
||||
/// muessen nichts lernen.
|
||||
model Baustein {
|
||||
id String @id @default(cuid())
|
||||
/// Eindeutig: der Name ist, wonach ein Redakteur ihn sucht.
|
||||
name String @unique
|
||||
beschreibung String?
|
||||
archiviert Boolean @default(false)
|
||||
erstelltAm DateTime @default(now())
|
||||
geaendertAm DateTime @default(now()) @updatedAt
|
||||
|
||||
versionen BausteinVersion[]
|
||||
|
||||
@@index([archiviert])
|
||||
}
|
||||
|
||||
model BausteinVersion {
|
||||
id String @id @default(cuid())
|
||||
bausteinId String
|
||||
version Int
|
||||
status VersionStatus @default(ENTWURF)
|
||||
/// Titel des Abschnitts, der daraus entsteht. Steht an der Version und nicht
|
||||
/// am Baustein, damit er sich aendern laesst, ohne alte Vorlagen umzuschreiben.
|
||||
titel String
|
||||
aenderungsnotiz String?
|
||||
veroeffentlichtAm DateTime?
|
||||
erstelltAm DateTime @default(now())
|
||||
geaendertAm DateTime @default(now()) @updatedAt
|
||||
|
||||
baustein Baustein @relation(fields: [bausteinId], references: [id], onDelete: Cascade)
|
||||
schritte BausteinSchritt[]
|
||||
verwendungen VorlagenAbschnitt[]
|
||||
|
||||
@@unique([bausteinId, version])
|
||||
@@index([bausteinId, status])
|
||||
}
|
||||
|
||||
model BausteinSchritt {
|
||||
id String @id @default(cuid())
|
||||
versionId String
|
||||
position Int @default(0)
|
||||
titel String
|
||||
hilfetext String?
|
||||
typ SchrittTyp @default(HAKEN)
|
||||
pflicht Boolean @default(false)
|
||||
konfig Json @default("{}")
|
||||
dokuUrl String?
|
||||
|
||||
version BausteinVersion @relation(fields: [versionId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([versionId, position])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user