91 lines
2.8 KiB
SQL
91 lines
2.8 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "StatoRichiesta" AS ENUM ('PENDING', 'APPROVATA', 'RIFIUTATA');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "OrigineRichiesta" AS ENUM ('LINK', 'PROFILO');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "gruppo_scout" (
|
|
"org_id" TEXT NOT NULL,
|
|
"nome" TEXT NOT NULL,
|
|
"regione" TEXT,
|
|
"data_creazione" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "gruppo_scout_pkey" PRIMARY KEY ("org_id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "invito" (
|
|
"id" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"ruolo" TEXT NOT NULL,
|
|
"scadenza" TIMESTAMP(3) NOT NULL,
|
|
"stato" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "invito_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "richiesta_ingresso" (
|
|
"id" TEXT NOT NULL,
|
|
"user_id" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"stato" "StatoRichiesta" NOT NULL DEFAULT 'PENDING',
|
|
"origine" "OrigineRichiesta" NOT NULL,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "richiesta_ingresso_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "link_ingresso" (
|
|
"id" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"attivo" BOOLEAN NOT NULL DEFAULT true,
|
|
"creato_da" TEXT NOT NULL,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "link_ingresso_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "richiesta_creazione_gruppo" (
|
|
"id" TEXT NOT NULL,
|
|
"user_id" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"nome_proposto" TEXT NOT NULL,
|
|
"regione" TEXT,
|
|
"stato" "StatoRichiesta" NOT NULL DEFAULT 'PENDING',
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "richiesta_creazione_gruppo_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "invito_token_key" ON "invito"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "richiesta_ingresso_email_idx" ON "richiesta_ingresso"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "link_ingresso_token_key" ON "link_ingresso"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "richiesta_creazione_gruppo_email_idx" ON "richiesta_creazione_gruppo"("email");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "invito" ADD CONSTRAINT "invito_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "gruppo_scout"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "richiesta_ingresso" ADD CONSTRAINT "richiesta_ingresso_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "gruppo_scout"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "link_ingresso" ADD CONSTRAINT "link_ingresso_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "gruppo_scout"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|