Fix sql e migration

This commit is contained in:
Lorenzo Sanesi
2026-07-25 12:37:29 +02:00
parent 7cd0a1ff1b
commit a4cca3f2c1
17 changed files with 8 additions and 594 deletions
+4 -4
View File
@@ -2,11 +2,11 @@
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
# Database di scouthub-attivita-be. Sulla stessa istanza vivono anche
# scouthub_home / scouthub_magazzino / scouthub_eventi (creati da db-init/
# al primo avvio), usati rispettivamente da home-backend/magazzino-backend/
# Database di scouthub-home-be. Sulla stessa istanza vivono anche
# scouthub / scouthub_magazzino / scouthub_eventi (creati da db-init/
# al primo avvio), usati rispettivamente da attivita-backend/magazzino-backend/
# eventi-backend con le stesse credenziali POSTGRES_USER/POSTGRES_PASSWORD.
POSTGRES_DB=scouthub
POSTGRES_DB=scouthub_home
POSTGRES_PORT=5432
KEYCLOAK_DB_PASSWORD=keycloak_change_me
-5
View File
@@ -1,5 +0,0 @@
-- scouthub-home-be usa un database separato sulla stessa istanza Postgres di "db".
-- Eseguito solo al primo avvio del container (volume dati vuoto).
SELECT 'CREATE DATABASE scouthub_home'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'scouthub_home')
\gexec
+3 -3
View File
@@ -10,7 +10,7 @@ services:
- "${POSTGRES_PORT}:5432"
volumes:
- scouthub_db_data:/var/lib/postgresql/data
# Crea anche i DB scouthub_home / scouthub_magazzino / scouthub_eventi
# Crea anche i DB scouthub / scouthub_magazzino / scouthub_eventi
# usati dagli altri backend, sulla stessa istanza (solo al primo init).
- ./db-init:/docker-entrypoint-initdb.d:ro
healthcheck:
@@ -26,7 +26,7 @@ services:
environment:
PORT: ${ATTIVITA_BACKEND_PORT}
CORS_ORIGIN: http://localhost:${ATTIVITA_FRONTEND_PORT}
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=public
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/scouthub?schema=public
KEYCLOAK_BASE_URL: http://keycloak:8080
KEYCLOAK_REALM: scouthub
ports:
@@ -55,7 +55,7 @@ services:
restart: unless-stopped
environment:
PORT: ${HOME_BACKEND_PORT}
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/scouthub_home?schema=public
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=public
FRONTEND_BASE_URL: http://localhost:${HOME_FRONTEND_PORT}
# Rete interna Docker: la validazione del JWT (JWKS) non controlla l'issuer,
# quindi non serve che coincida con l'hostname visto dal browser (localhost:8081).
-240
View File
@@ -1,240 +0,0 @@
-- **************************************************** stato_attivita
create table stato_attivita
(
id varchar(2) not null primary key,
nome varchar(250) not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null
);
-- **************************************************** tipo_categoria
create table tipo_categoria
(
id varchar(2) not null primary key,
nome varchar(250) not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null
);
-- **************************************************** tipo_paragrafo
create table tipo_paragrafo
(
id varchar(10) not null primary key,
nome varchar(250) not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null
);
-- **************************************************** attivita
create table attivita
(
id int not null primary key auto_increment,
nome varchar(250) not null,
autore varchar(250) not null,
padre int null,
stato varchar(2) not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
constraint fk_attivita_attivita foreign key (padre) references attivita (id),
constraint fk_attivita_stato_attivita foreign key (stato) references stato_attivita (id)
);
create index fk_attivita_attivita_idx on attivita (padre);
create index fk_attivita_stato_attivita_idx on attivita (stato);
-- **************************************************** branca
create table branca
(
id int not null primary key auto_increment,
nome varchar(250) not null,
inizio_eta int null,
fine_eta int null,
colore varchar(10) null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null
);
-- **************************************************** branca_attivita
create table branca_attivita
(
attivita_id int not null,
branca_id int not null,
cancellato tinyint not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
primary key (attivita_id, branca_id),
constraint fk_branca_attivita_attivita foreign key (attivita_id) references attivita (id),
constraint fk_branca_attivita_branca foreign key (branca_id) references branca (id)
);
create index fk_branca_attivita_attivita_idx on branca_attivita (attivita_id);
create index fk_branca_attivita_branca_idx on branca_attivita (branca_id);
-- **************************************************** periodo_anno
create table periodo_anno
(
id int not null primary key auto_increment,
nome varchar(250) not null,
inizio_mese int null,
fine_mese int null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null
);
-- **************************************************** periodo_anno_attivita
create table periodo_anno_attivita
(
attivita_id int not null,
periodo_anno_id int not null,
cancellato tinyint not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
primary key (attivita_id, periodo_anno_id),
constraint fk_periodo_anno_attivita_attivita foreign key (attivita_id) references attivita (id),
constraint fk_periodo_anno_attivita_periodo_anno foreign key (periodo_anno_id) references periodo_anno (id)
);
create index fk_periodo_anno_attivita_attivita_idx on periodo_anno_attivita (attivita_id);
create index fkperiodo_anno_attivita_periodo_anno_idx on periodo_anno_attivita (periodo_anno_id);
-- **************************************************** paragrafo
create table paragrafo
(
id int not null primary key auto_increment,
attivita_id int not null,
corpo varchar(500) not null,
autore varchar(250) not null,
tipo varchar(10) not null,
ordine int not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
constraint fk_paragrafo_tipo_paragrafo foreign key (tipo) references tipo_paragrafo (id),
constraint fk_paragrafo_attivita foreign key (attivita_id) references attivita (id)
);
create index fk_paragrafo_tipo_paragrafo_idx on paragrafo (tipo);
-- **************************************************** categoria
create table categoria
(
id int not null primary key auto_increment,
nome varchar(250) not null,
padre int null,
tipo varchar(2) not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
constraint fk_categoria_categoria foreign key (padre) references categoria (id),
constraint fk_categoria_tipo_categoria foreign key (tipo) references tipo_categoria (id)
);
create index fk_categoria_categoria_idx on categoria (padre);
create index fk_categoria_tipo_categoria_idx on categoria (tipo);
-- **************************************************** categoria_attivita
create table categoria_attivita
(
attivita_id int not null,
categoria_id int not null,
cancellato tinyint not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
primary key (attivita_id, categoria_id),
constraint fk_categoria_attivita_attivita foreign key (attivita_id) references attivita (id),
constraint fk_categoria_attivita_categoria foreign key (categoria_id) references categoria (id)
);
create index fk_categoria_attivita_attivita_idx on categoria_attivita (attivita_id);
create index fk_categoria_attivita_categoria_idx on categoria_attivita (categoria_id);
-- **************************************************** materiale
create table materiale
(
id int not null primary key auto_increment,
nome varchar(250) not null,
proprieta json,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null
);
-- **************************************************** materiale_attivita
create table materiale_attivita
(
attivita_id int not null,
materiale_id int not null,
proprieta json null,
cancellato tinyint not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
primary key (attivita_id, materiale_id),
constraint fk_materiale_attivita_attivita foreign key (attivita_id) references attivita (id),
constraint fk_materiale_attivita_materiale foreign key (materiale_id) references materiale (id)
);
create index fk_materiale_attivita_attivita_idx on materiale_attivita (attivita_id);
create index fk_materiale_attivita_materiale_idx on materiale_attivita (materiale_id);
-- **************************************************** categoria_materiale
create table categoria_materiale
(
materiale_id int not null,
categoria_id int not null,
cancellato tinyint not null,
data_creazione datetime not null,
data_modifica datetime not null,
utente_modifica varchar(50) not null,
primary key (materiale_id, categoria_id),
constraint fk_categoria_materiale_categoria foreign key (categoria_id) references categoria (id),
constraint fk_categoria_materiale_materiale foreign key (materiale_id) references materiale (id)
);
create index fk_categoria_materiale_categoria_idx on categoria_materiale (categoria_id);
create index fk_categoria_materiale_materiale_idx on categoria_materiale (materiale_id);
@@ -1,3 +0,0 @@
INSERT INTO scouthub.stato_attivita (id, nome, data_creazione, data_modifica, utente_modifica) VALUES ('PU', 'Pubblicato', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.stato_attivita (id, nome, data_creazione, data_modifica, utente_modifica) VALUES ('BO', 'Bozza', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.stato_attivita (id, nome, data_creazione, data_modifica, utente_modifica) VALUES ('PR', 'Privato', sysdate(), sysdate(), 'MANUALE');
@@ -1,2 +0,0 @@
INSERT INTO scouthub.tipo_categoria (id, nome, data_creazione, data_modifica, utente_modifica) VALUES ('A', 'Attività', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.tipo_categoria (id, nome, data_creazione, data_modifica, utente_modifica) VALUES ('M', 'Materiale', sysdate(), sysdate(), 'MANUALE');
@@ -1,2 +0,0 @@
INSERT INTO scouthub.tipo_paragrafo (id, nome, data_creazione, data_modifica, utente_modifica) VALUES ('TITOLO', 'Titolo attività', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.tipo_paragrafo (id, nome, data_creazione, data_modifica, utente_modifica) VALUES ('PARAGRAFO', 'Paragrafo attività', sysdate(), sysdate(), 'MANUALE');
@@ -1,4 +0,0 @@
INSERT INTO scouthub.branca (id, nome, inizio_eta, fine_eta, colore, data_creazione, data_modifica, utente_modifica) VALUES (1, 'L/C', 8, 10, '#FDD835', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.branca (id, nome, inizio_eta, fine_eta, colore, data_creazione, data_modifica, utente_modifica) VALUES (2, 'E/G', 11, 16, '#43A047', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.branca (id, nome, inizio_eta, fine_eta, colore, data_creazione, data_modifica, utente_modifica) VALUES (3, 'R/S', 17, 21, '#E53935', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.branca (id, nome, inizio_eta, fine_eta, colore, data_creazione, data_modifica, utente_modifica) VALUES (4, 'Co.Ca.', 22, 99, '#8E24AA', sysdate(), sysdate(), 'MANUALE');
@@ -1,3 +0,0 @@
INSERT INTO scouthub.periodo_anno (id, nome, inizio_mese, fine_mese, data_creazione, data_modifica, utente_modifica) VALUES (1, 'promessa', 1, 3, sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.periodo_anno (id, nome, inizio_mese, fine_mese, data_creazione, data_modifica, utente_modifica) VALUES (2, 'campo estivo', 6, 9, sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.periodo_anno (id, nome, inizio_mese, fine_mese, data_creazione, data_modifica, utente_modifica) VALUES (3, 'campo invernale', 12, 1, sysdate(), sysdate(), 'MANUALE');
@@ -1,9 +0,0 @@
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (1, 'attività', null, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (2, 'gioco', null, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (3, 'danza', null, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (4, 'gioco d''acqua', 2, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (5, 'gioco notturno', 2, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (6, 'grande gioco', 2, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (7, 'torneo', 2, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (8, 'olimpiadi', 2, 'A', sysdate(), sysdate(), 'MANUALE');
INSERT INTO scouthub.categoria (id, nome, padre, tipo, data_creazione, data_modifica, utente_modifica) VALUES (9, 'gioco giungla', 2, 'A', sysdate(), sysdate(), 'MANUALE');
Binary file not shown.
@@ -1,223 +0,0 @@
-- 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;
@@ -1,7 +0,0 @@
-- AlterTable
-- Le righe esistenti (dati di sviluppo/seed, precedenti all'introduzione
-- dell'autenticazione Keycloak) non hanno un autore reale: valorizzate con
-- stringa vuota, poi il default viene rimosso perche' da qui in avanti
-- autoreId e' sempre valorizzato dal token (sub) al momento della creazione.
ALTER TABLE "attivita" ADD COLUMN "autore_id" TEXT NOT NULL DEFAULT '';
ALTER TABLE "attivita" ALTER COLUMN "autore_id" DROP DEFAULT;
+1 -3
View File
@@ -13,6 +13,4 @@ RUN npm run build
EXPOSE 8082
# Niente migrazioni ancora create (prisma/migrations assente): db push sincronizza
# lo schema direttamente, coerente con lo stato early-stage del progetto.
CMD ["sh", "-c", "npx prisma db push --skip-generate && node dist/server.js"]
CMD ["sh", "-c", "npx prisma migrate deploy && node dist/server.js"]
@@ -1,26 +0,0 @@
-- 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;
@@ -1,60 +0,0 @@
-- 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;