-- 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, "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, 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, 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, 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") ); -- 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;