126 lines
4.1 KiB
SQL
126 lines
4.1 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "stato_materiale" AS ENUM ('proposto', 'approvato', 'rifiutato');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "stato_magazzino_voce" AS ENUM ('buono', 'da_riparare', 'mancante');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "materiale" (
|
|
"id" TEXT NOT NULL,
|
|
"nome" TEXT NOT NULL,
|
|
"categoria" TEXT NOT NULL,
|
|
"unita_misura" TEXT NOT NULL,
|
|
"stato" "stato_materiale" NOT NULL DEFAULT 'proposto',
|
|
"proposto_da_org_id" TEXT NOT NULL,
|
|
"creato_il" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "materiale_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "tipo_evento" (
|
|
"id" TEXT NOT NULL,
|
|
"nome" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "tipo_evento_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "lista_modello" (
|
|
"id" TEXT NOT NULL,
|
|
"nome" TEXT NOT NULL,
|
|
"tipo_evento_id" TEXT NOT NULL,
|
|
"pubblica" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
CONSTRAINT "lista_modello_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "lista_modello_voce" (
|
|
"lista_modello_id" TEXT NOT NULL,
|
|
"materiale_id" TEXT NOT NULL,
|
|
"quantita" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "lista_modello_voce_pkey" PRIMARY KEY ("lista_modello_id","materiale_id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "lista" (
|
|
"id" TEXT NOT NULL,
|
|
"nome" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"creata_il" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "lista_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "lista_voce" (
|
|
"lista_id" TEXT NOT NULL,
|
|
"materiale_id" TEXT NOT NULL,
|
|
"quantita" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "lista_voce_pkey" PRIMARY KEY ("lista_id","materiale_id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "magazzino_voce" (
|
|
"id" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"materiale_id" TEXT NOT NULL,
|
|
"quantita_posseduta" INTEGER NOT NULL,
|
|
"stato" "stato_magazzino_voce" NOT NULL,
|
|
"posizione" TEXT,
|
|
"note" TEXT,
|
|
|
|
CONSTRAINT "magazzino_voce_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "evento" (
|
|
"id" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"nome" TEXT NOT NULL,
|
|
"lista_id" TEXT NOT NULL,
|
|
"data" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "evento_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "evento_check" (
|
|
"evento_id" TEXT NOT NULL,
|
|
"materiale_id" TEXT NOT NULL,
|
|
"portato" BOOLEAN NOT NULL DEFAULT false,
|
|
"note" TEXT,
|
|
|
|
CONSTRAINT "evento_check_pkey" PRIMARY KEY ("evento_id","materiale_id")
|
|
);
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "lista_modello" ADD CONSTRAINT "lista_modello_tipo_evento_id_fkey" FOREIGN KEY ("tipo_evento_id") REFERENCES "tipo_evento"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "lista_modello_voce" ADD CONSTRAINT "lista_modello_voce_lista_modello_id_fkey" FOREIGN KEY ("lista_modello_id") REFERENCES "lista_modello"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "lista_modello_voce" ADD CONSTRAINT "lista_modello_voce_materiale_id_fkey" FOREIGN KEY ("materiale_id") REFERENCES "materiale"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "lista_voce" ADD CONSTRAINT "lista_voce_lista_id_fkey" FOREIGN KEY ("lista_id") REFERENCES "lista"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "lista_voce" ADD CONSTRAINT "lista_voce_materiale_id_fkey" FOREIGN KEY ("materiale_id") REFERENCES "materiale"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "magazzino_voce" ADD CONSTRAINT "magazzino_voce_materiale_id_fkey" FOREIGN KEY ("materiale_id") REFERENCES "materiale"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "evento" ADD CONSTRAINT "evento_lista_id_fkey" FOREIGN KEY ("lista_id") REFERENCES "lista"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "evento_check" ADD CONSTRAINT "evento_check_evento_id_fkey" FOREIGN KEY ("evento_id") REFERENCES "evento"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "evento_check" ADD CONSTRAINT "evento_check_materiale_id_fkey" FOREIGN KEY ("materiale_id") REFERENCES "materiale"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|