From a4cca3f2c1917b19ec14832051bc4c3c850a7b2e Mon Sep 17 00:00:00 2001 From: Lorenzo Sanesi Date: Sat, 25 Jul 2026 12:37:29 +0200 Subject: [PATCH] Fix sql e migration --- .env.example | 8 +- db-init/init-home-db.sql | 5 - docker-compose.yml | 6 +- scouthub-attivita-be/DDL/1-creazioneDB.sql | 240 ------------------ .../DDL/2-insertStatoAttivita.sql | 3 - .../DDL/3-insertTipoCategoria.sql | 2 - .../DDL/4-insertTipoParagrafo.sql | 2 - scouthub-attivita-be/DDL/5-insertBranca.sql | 4 - .../DDL/6-insertPeriodoAnno.sql | 3 - .../DDL/7-insertCategoria.sql | 9 - .../DDL/8-insertMateriale.sql | 0 scouthub-attivita-be/DDL/insertScouthub.xlsx | Bin 17518 -> 0 bytes .../20260722231426_init/migration.sql | 223 ---------------- .../migration.sql | 7 - scouthub-home-be/Dockerfile | 4 +- .../migrations/0000_baseline/migration.sql | 26 -- .../migration.sql | 60 ----- 17 files changed, 8 insertions(+), 594 deletions(-) delete mode 100644 db-init/init-home-db.sql delete mode 100644 scouthub-attivita-be/DDL/1-creazioneDB.sql delete mode 100644 scouthub-attivita-be/DDL/2-insertStatoAttivita.sql delete mode 100644 scouthub-attivita-be/DDL/3-insertTipoCategoria.sql delete mode 100644 scouthub-attivita-be/DDL/4-insertTipoParagrafo.sql delete mode 100644 scouthub-attivita-be/DDL/5-insertBranca.sql delete mode 100644 scouthub-attivita-be/DDL/6-insertPeriodoAnno.sql delete mode 100644 scouthub-attivita-be/DDL/7-insertCategoria.sql delete mode 100644 scouthub-attivita-be/DDL/8-insertMateriale.sql delete mode 100644 scouthub-attivita-be/DDL/insertScouthub.xlsx delete mode 100644 scouthub-attivita-be/prisma/migrations/20260722231426_init/migration.sql delete mode 100644 scouthub-attivita-be/prisma/migrations/20260723130000_add_autore_id/migration.sql delete mode 100644 scouthub-home-be/prisma/migrations/0000_baseline/migration.sql delete mode 100644 scouthub-home-be/prisma/migrations/20260723201327_aggiungi_richieste_e_link_ingresso/migration.sql diff --git a/.env.example b/.env.example index b80a890..487be40 100644 --- a/.env.example +++ b/.env.example @@ -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 diff --git a/db-init/init-home-db.sql b/db-init/init-home-db.sql deleted file mode 100644 index 1b2b764..0000000 --- a/db-init/init-home-db.sql +++ /dev/null @@ -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 diff --git a/docker-compose.yml b/docker-compose.yml index 41380d1..ea2e2cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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). diff --git a/scouthub-attivita-be/DDL/1-creazioneDB.sql b/scouthub-attivita-be/DDL/1-creazioneDB.sql deleted file mode 100644 index 0ac004f..0000000 --- a/scouthub-attivita-be/DDL/1-creazioneDB.sql +++ /dev/null @@ -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); - - diff --git a/scouthub-attivita-be/DDL/2-insertStatoAttivita.sql b/scouthub-attivita-be/DDL/2-insertStatoAttivita.sql deleted file mode 100644 index e530a04..0000000 --- a/scouthub-attivita-be/DDL/2-insertStatoAttivita.sql +++ /dev/null @@ -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'); \ No newline at end of file diff --git a/scouthub-attivita-be/DDL/3-insertTipoCategoria.sql b/scouthub-attivita-be/DDL/3-insertTipoCategoria.sql deleted file mode 100644 index 1493e95..0000000 --- a/scouthub-attivita-be/DDL/3-insertTipoCategoria.sql +++ /dev/null @@ -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'); \ No newline at end of file diff --git a/scouthub-attivita-be/DDL/4-insertTipoParagrafo.sql b/scouthub-attivita-be/DDL/4-insertTipoParagrafo.sql deleted file mode 100644 index 049dd4a..0000000 --- a/scouthub-attivita-be/DDL/4-insertTipoParagrafo.sql +++ /dev/null @@ -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'); \ No newline at end of file diff --git a/scouthub-attivita-be/DDL/5-insertBranca.sql b/scouthub-attivita-be/DDL/5-insertBranca.sql deleted file mode 100644 index 435ca30..0000000 --- a/scouthub-attivita-be/DDL/5-insertBranca.sql +++ /dev/null @@ -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'); \ No newline at end of file diff --git a/scouthub-attivita-be/DDL/6-insertPeriodoAnno.sql b/scouthub-attivita-be/DDL/6-insertPeriodoAnno.sql deleted file mode 100644 index 9c616c3..0000000 --- a/scouthub-attivita-be/DDL/6-insertPeriodoAnno.sql +++ /dev/null @@ -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'); \ No newline at end of file diff --git a/scouthub-attivita-be/DDL/7-insertCategoria.sql b/scouthub-attivita-be/DDL/7-insertCategoria.sql deleted file mode 100644 index e5b2b34..0000000 --- a/scouthub-attivita-be/DDL/7-insertCategoria.sql +++ /dev/null @@ -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'); \ No newline at end of file diff --git a/scouthub-attivita-be/DDL/8-insertMateriale.sql b/scouthub-attivita-be/DDL/8-insertMateriale.sql deleted file mode 100644 index e69de29..0000000 diff --git a/scouthub-attivita-be/DDL/insertScouthub.xlsx b/scouthub-attivita-be/DDL/insertScouthub.xlsx deleted file mode 100644 index 8f356d2dea7a971667544d21d967e450fcd7d562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17518 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 diff --git a/scouthub-attivita-be/prisma/migrations/20260722231426_init/migration.sql b/scouthub-attivita-be/prisma/migrations/20260722231426_init/migration.sql deleted file mode 100644 index 69abbac..0000000 --- a/scouthub-attivita-be/prisma/migrations/20260722231426_init/migration.sql +++ /dev/null @@ -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; - diff --git a/scouthub-attivita-be/prisma/migrations/20260723130000_add_autore_id/migration.sql b/scouthub-attivita-be/prisma/migrations/20260723130000_add_autore_id/migration.sql deleted file mode 100644 index dd0530a..0000000 --- a/scouthub-attivita-be/prisma/migrations/20260723130000_add_autore_id/migration.sql +++ /dev/null @@ -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; diff --git a/scouthub-home-be/Dockerfile b/scouthub-home-be/Dockerfile index defc01d..9c582c5 100644 --- a/scouthub-home-be/Dockerfile +++ b/scouthub-home-be/Dockerfile @@ -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"] diff --git a/scouthub-home-be/prisma/migrations/0000_baseline/migration.sql b/scouthub-home-be/prisma/migrations/0000_baseline/migration.sql deleted file mode 100644 index 124a69e..0000000 --- a/scouthub-home-be/prisma/migrations/0000_baseline/migration.sql +++ /dev/null @@ -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; diff --git a/scouthub-home-be/prisma/migrations/20260723201327_aggiungi_richieste_e_link_ingresso/migration.sql b/scouthub-home-be/prisma/migrations/20260723201327_aggiungi_richieste_e_link_ingresso/migration.sql deleted file mode 100644 index c7463f4..0000000 --- a/scouthub-home-be/prisma/migrations/20260723201327_aggiungi_richieste_e_link_ingresso/migration.sql +++ /dev/null @@ -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;