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") }