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

268 lines
9.4 KiB
SQL

-- CreateEnum
CREATE TYPE "StatoTassonomia" AS ENUM ('CONFERMATA', 'DA_APPROVARE');
-- CreateEnum
CREATE TYPE "TipoNotifica" AS ENUM ('TASSONOMIA_PROPOSTA', 'ATTIVITA_IN_ATTESA', 'ATTIVITA_PUBBLICATA', 'ATTIVITA_BOZZA_NOTA');
-- CreateTable
CREATE TABLE "stato_attivita" (
"id" VARCHAR(2) NOT NULL,
"nome" TEXT NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "stato_attivita_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "tipo_categoria" (
"id" TEXT NOT NULL,
"nome" TEXT NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "tipo_categoria_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "tipo_paragrafo" (
"id" TEXT NOT NULL,
"nome" TEXT NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "tipo_paragrafo_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "attivita" (
"id" SERIAL NOT NULL,
"nome" TEXT NOT NULL,
"autore" TEXT NOT NULL,
"autore_id" TEXT NOT NULL,
"padre" INTEGER,
"stato" TEXT NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "attivita_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "branca" (
"id" SERIAL NOT NULL,
"nome" TEXT NOT NULL,
"inizio_eta" INTEGER,
"fine_eta" INTEGER,
"colore" VARCHAR(10),
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
"creato_da_id" TEXT,
"stato" "StatoTassonomia" NOT NULL DEFAULT 'CONFERMATA',
CONSTRAINT "branca_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "branca_attivita" (
"attivita_id" INTEGER NOT NULL,
"branca_id" INTEGER NOT NULL,
"cancellato" BOOLEAN NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "branca_attivita_pkey" PRIMARY KEY ("attivita_id","branca_id")
);
-- CreateTable
CREATE TABLE "periodo_anno" (
"id" SERIAL NOT NULL,
"nome" TEXT NOT NULL,
"inizio_mese" INTEGER,
"fine_mese" INTEGER,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
"creato_da_id" TEXT,
"stato" "StatoTassonomia" NOT NULL DEFAULT 'CONFERMATA',
CONSTRAINT "periodo_anno_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "periodo_anno_attivita" (
"attivita_id" INTEGER NOT NULL,
"periodo_anno_id" INTEGER NOT NULL,
"cancellato" BOOLEAN NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "periodo_anno_attivita_pkey" PRIMARY KEY ("attivita_id","periodo_anno_id")
);
-- CreateTable
CREATE TABLE "paragrafo" (
"id" SERIAL NOT NULL,
"attivita_id" INTEGER NOT NULL,
"corpo" VARCHAR(500) NOT NULL,
"autore" TEXT NOT NULL,
"tipo" TEXT NOT NULL,
"ordine" INTEGER NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "paragrafo_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "categoria" (
"id" SERIAL NOT NULL,
"nome" TEXT NOT NULL,
"padre" INTEGER,
"tipo" TEXT NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
"creato_da_id" TEXT,
"stato" "StatoTassonomia" NOT NULL DEFAULT 'CONFERMATA',
CONSTRAINT "categoria_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "categoria_attivita" (
"attivita_id" INTEGER NOT NULL,
"categoria_id" INTEGER NOT NULL,
"cancellato" BOOLEAN NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "categoria_attivita_pkey" PRIMARY KEY ("attivita_id","categoria_id")
);
-- CreateTable
CREATE TABLE "materiale" (
"id" SERIAL NOT NULL,
"nome" TEXT NOT NULL,
"proprieta" JSONB,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "materiale_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "materiale_attivita" (
"attivita_id" INTEGER NOT NULL,
"materiale_id" INTEGER NOT NULL,
"proprieta" JSONB,
"cancellato" BOOLEAN NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "materiale_attivita_pkey" PRIMARY KEY ("attivita_id","materiale_id")
);
-- CreateTable
CREATE TABLE "categoria_materiale" (
"materiale_id" INTEGER NOT NULL,
"categoria_id" INTEGER NOT NULL,
"cancellato" BOOLEAN NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"data_modifica" TIMESTAMP(3) NOT NULL,
"utente_modifica" TEXT NOT NULL,
CONSTRAINT "categoria_materiale_pkey" PRIMARY KEY ("materiale_id","categoria_id")
);
-- CreateTable
CREATE TABLE "notifica" (
"id" SERIAL NOT NULL,
"tipo" "TipoNotifica" NOT NULL,
"messaggio" TEXT NOT NULL,
"link" TEXT,
"destinatario_id" TEXT,
"letta" BOOLEAN NOT NULL DEFAULT false,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "notifica_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "notifica_destinatario_id_idx" ON "notifica"("destinatario_id");
-- CreateTable
CREATE TABLE "nota_attivita" (
"id" SERIAL NOT NULL,
"attivita_id" INTEGER NOT NULL,
"testo" VARCHAR(1000) NOT NULL,
"autore" TEXT NOT NULL,
"autore_id" TEXT NOT NULL,
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "nota_attivita_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "attivita" ADD CONSTRAINT "attivita_padre_fkey" FOREIGN KEY ("padre") REFERENCES "attivita"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "attivita" ADD CONSTRAINT "attivita_stato_fkey" FOREIGN KEY ("stato") REFERENCES "stato_attivita"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "branca_attivita" ADD CONSTRAINT "branca_attivita_attivita_id_fkey" FOREIGN KEY ("attivita_id") REFERENCES "attivita"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "branca_attivita" ADD CONSTRAINT "branca_attivita_branca_id_fkey" FOREIGN KEY ("branca_id") REFERENCES "branca"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "periodo_anno_attivita" ADD CONSTRAINT "periodo_anno_attivita_attivita_id_fkey" FOREIGN KEY ("attivita_id") REFERENCES "attivita"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "periodo_anno_attivita" ADD CONSTRAINT "periodo_anno_attivita_periodo_anno_id_fkey" FOREIGN KEY ("periodo_anno_id") REFERENCES "periodo_anno"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "paragrafo" ADD CONSTRAINT "paragrafo_attivita_id_fkey" FOREIGN KEY ("attivita_id") REFERENCES "attivita"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "paragrafo" ADD CONSTRAINT "paragrafo_tipo_fkey" FOREIGN KEY ("tipo") REFERENCES "tipo_paragrafo"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "categoria" ADD CONSTRAINT "categoria_padre_fkey" FOREIGN KEY ("padre") REFERENCES "categoria"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "categoria" ADD CONSTRAINT "categoria_tipo_fkey" FOREIGN KEY ("tipo") REFERENCES "tipo_categoria"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "categoria_attivita" ADD CONSTRAINT "categoria_attivita_attivita_id_fkey" FOREIGN KEY ("attivita_id") REFERENCES "attivita"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "categoria_attivita" ADD CONSTRAINT "categoria_attivita_categoria_id_fkey" FOREIGN KEY ("categoria_id") REFERENCES "categoria"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "materiale_attivita" ADD CONSTRAINT "materiale_attivita_attivita_id_fkey" FOREIGN KEY ("attivita_id") REFERENCES "attivita"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "materiale_attivita" ADD CONSTRAINT "materiale_attivita_materiale_id_fkey" FOREIGN KEY ("materiale_id") REFERENCES "materiale"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "categoria_materiale" ADD CONSTRAINT "categoria_materiale_materiale_id_fkey" FOREIGN KEY ("materiale_id") REFERENCES "materiale"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "categoria_materiale" ADD CONSTRAINT "categoria_materiale_categoria_id_fkey" FOREIGN KEY ("categoria_id") REFERENCES "categoria"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "nota_attivita" ADD CONSTRAINT "nota_attivita_attivita_id_fkey" FOREIGN KEY ("attivita_id") REFERENCES "attivita"("id") ON DELETE RESTRICT ON UPDATE CASCADE;