Fix scouthub-home-be

This commit is contained in:
Lorenzo Sanesi
2026-07-25 12:09:12 +02:00
parent ac92ca43ce
commit 5b7c82d359
39 changed files with 2116 additions and 81 deletions
@@ -0,0 +1,26 @@
-- Baseline migration representing the schema already present in the database
-- before migration history was introduced (created via `prisma db push`).
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")
);
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")
);
CREATE UNIQUE INDEX "invito_token_key" ON "invito"("token");
ALTER TABLE "invito" ADD CONSTRAINT "invito_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "gruppo_scout"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -0,0 +1,60 @@
-- CreateEnum
CREATE TYPE "StatoRichiesta" AS ENUM ('PENDING', 'APPROVATA', 'RIFIUTATA');
-- CreateEnum
CREATE TYPE "OrigineRichiesta" AS ENUM ('LINK', 'PROFILO');
-- 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 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 "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;
@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider = "postgresql"
+57 -1
View File
@@ -13,7 +13,9 @@ model GruppoScout {
regione String?
dataCreazione DateTime @default(now()) @map("data_creazione")
inviti Invito[]
inviti Invito[]
richiesteIngresso RichiestaIngresso[]
linkIngresso LinkIngresso[]
@@map("gruppo_scout")
}
@@ -31,3 +33,57 @@ model Invito {
@@map("invito")
}
enum StatoRichiesta {
PENDING
APPROVATA
RIFIUTATA
}
enum OrigineRichiesta {
LINK
PROFILO
}
model RichiestaIngresso {
id String @id @default(uuid())
userId String @map("user_id")
email String
orgId String @map("org_id")
stato StatoRichiesta @default(PENDING)
origine OrigineRichiesta
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
gruppoScout GruppoScout @relation(fields: [orgId], references: [orgId])
@@index([email])
@@map("richiesta_ingresso")
}
model LinkIngresso {
id String @id @default(uuid())
token String @unique
orgId String @map("org_id")
attivo Boolean @default(true)
creatoDa String @map("creato_da")
createdAt DateTime @default(now()) @map("created_at")
gruppoScout GruppoScout @relation(fields: [orgId], references: [orgId])
@@map("link_ingresso")
}
model RichiestaCreazioneGruppo {
id String @id @default(uuid())
userId String @map("user_id")
email String
nomeProposto String @map("nome_proposto")
regione String?
stato StatoRichiesta @default(PENDING)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@index([email])
@@map("richiesta_creazione_gruppo")
}