Files
2026-07-26 03:19:11 +02:00

271 lines
8.4 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
enum StatoTassonomia {
CONFERMATA
DA_APPROVARE
}
enum TipoNotifica {
TASSONOMIA_PROPOSTA
ATTIVITA_IN_ATTESA
ATTIVITA_PUBBLICATA
ATTIVITA_BOZZA_NOTA
}
// destinatarioId null = notifica "broadcast" visibile a chiunque abbia ruolo admin/moderatore
// (usata per segnalare nuove proposte/attività da revisionare); altrimenti è personale.
model Notifica {
id Int @id @default(autoincrement())
tipo TipoNotifica
messaggio String
link String?
destinatarioId String? @map("destinatario_id")
letta Boolean @default(false)
dataCreazione DateTime @default(now()) @map("data_creazione")
@@index([destinatarioId])
@@map("notifica")
}
model StatoAttivita {
id String @id @db.VarChar(2)
nome String
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivita Attivita[]
@@map("stato_attivita")
}
model TipoCategoria {
id String @id
nome String
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
categorie Categoria[]
@@map("tipo_categoria")
}
model TipoParagrafo {
id String @id
nome String
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
paragrafi Paragrafo[]
@@map("tipo_paragrafo")
}
model Attivita {
id Int @id @default(autoincrement())
nome String
autore String
autoreId String @map("autore_id")
padreId Int? @map("padre")
statoId String @map("stato")
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
padre Attivita? @relation("AttivitaPadre", fields: [padreId], references: [id])
figli Attivita[] @relation("AttivitaPadre")
stato StatoAttivita @relation(fields: [statoId], references: [id])
paragrafi Paragrafo[]
brancaLinks BrancaAttivita[]
categoriaLinks CategoriaAttivita[]
materialeLinks MaterialeAttivita[]
periodoAnnoLinks PeriodoAnnoAttivita[]
noteList NotaAttivita[]
@@map("attivita")
}
model NotaAttivita {
id Int @id @default(autoincrement())
attivitaId Int @map("attivita_id")
testo String @db.VarChar(1000)
autore String
autoreId String @map("autore_id")
dataCreazione DateTime @default(now()) @map("data_creazione")
attivita Attivita @relation(fields: [attivitaId], references: [id])
@@map("nota_attivita")
}
model Branca {
id Int @id @default(autoincrement())
nome String
inizioEta Int? @map("inizio_eta")
fineEta Int? @map("fine_eta")
colore String? @db.VarChar(10)
stato StatoTassonomia @default(CONFERMATA)
creatoDaId String? @map("creato_da_id")
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivitaLinks BrancaAttivita[]
@@map("branca")
}
model BrancaAttivita {
attivitaId Int @map("attivita_id")
brancaId Int @map("branca_id")
cancellato Boolean
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivita Attivita @relation(fields: [attivitaId], references: [id])
branca Branca @relation(fields: [brancaId], references: [id])
@@id([attivitaId, brancaId])
@@map("branca_attivita")
}
model PeriodoAnno {
id Int @id @default(autoincrement())
nome String
inizioMese Int? @map("inizio_mese")
fineMese Int? @map("fine_mese")
stato StatoTassonomia @default(CONFERMATA)
creatoDaId String? @map("creato_da_id")
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivitaLinks PeriodoAnnoAttivita[]
@@map("periodo_anno")
}
model PeriodoAnnoAttivita {
attivitaId Int @map("attivita_id")
periodoAnnoId Int @map("periodo_anno_id")
cancellato Boolean
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivita Attivita @relation(fields: [attivitaId], references: [id])
periodoAnno PeriodoAnno @relation(fields: [periodoAnnoId], references: [id])
@@id([attivitaId, periodoAnnoId])
@@map("periodo_anno_attivita")
}
model Paragrafo {
id Int @id @default(autoincrement())
attivitaId Int @map("attivita_id")
corpo String @db.VarChar(500)
autore String
tipoId String @map("tipo")
ordine Int
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivita Attivita @relation(fields: [attivitaId], references: [id])
tipo TipoParagrafo @relation(fields: [tipoId], references: [id])
@@map("paragrafo")
}
model Categoria {
id Int @id @default(autoincrement())
nome String
padreId Int? @map("padre")
tipoId String @map("tipo")
stato StatoTassonomia @default(CONFERMATA)
creatoDaId String? @map("creato_da_id")
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
padre Categoria? @relation("CategoriaPadre", fields: [padreId], references: [id])
figli Categoria[] @relation("CategoriaPadre")
tipo TipoCategoria @relation(fields: [tipoId], references: [id])
attivitaLinks CategoriaAttivita[]
materialeLinks CategoriaMateriale[]
@@map("categoria")
}
model CategoriaAttivita {
attivitaId Int @map("attivita_id")
categoriaId Int @map("categoria_id")
cancellato Boolean
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivita Attivita @relation(fields: [attivitaId], references: [id])
categoria Categoria @relation(fields: [categoriaId], references: [id])
@@id([attivitaId, categoriaId])
@@map("categoria_attivita")
}
model Materiale {
id Int @id @default(autoincrement())
nome String
proprieta Json?
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivitaLinks MaterialeAttivita[]
categoriaLinks CategoriaMateriale[]
@@map("materiale")
}
model MaterialeAttivita {
attivitaId Int @map("attivita_id")
materialeId Int @map("materiale_id")
proprieta Json?
cancellato Boolean
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
attivita Attivita @relation(fields: [attivitaId], references: [id])
materiale Materiale @relation(fields: [materialeId], references: [id])
@@id([attivitaId, materialeId])
@@map("materiale_attivita")
}
model CategoriaMateriale {
materialeId Int @map("materiale_id")
categoriaId Int @map("categoria_id")
cancellato Boolean
dataCreazione DateTime @default(now()) @map("data_creazione")
dataModifica DateTime @updatedAt @map("data_modifica")
utenteModifica String @map("utente_modifica")
materiale Materiale @relation(fields: [materialeId], references: [id])
categoria Categoria @relation(fields: [categoriaId], references: [id])
@@id([materialeId, categoriaId])
@@map("categoria_materiale")
}