diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f52bccd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "sqltools.connections": [ + { + "ssh": "Disabled", + "previewLimit": 50, + "server": "localhost", + "port": 5433, + "driver": "PostgreSQL", + "name": "dev", + "database": "postgres", + "username": "postgres", + "password": "rootpost" + } + ] +} \ No newline at end of file diff --git a/apps/db/Dockerfile b/apps/db/Dockerfile deleted file mode 100644 index b784213..0000000 --- a/apps/db/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -# Start a new stage for PostgreSQL -FROM postgres:16 AS postgres - -# Set environment variables for PostgreSQL - -ARG POSTGRES_USER -ARG POSTGRES_PASSWORD -ARG POSTGRES_DB - -ENV POSTGRES_USER=$POSTGRES_USER -ENV POSTGRES_PASSWORD=$POSTGRES_PASSWORD -ENV POSTGRES_DB=$POSTGRES_DB - -# Copy the schema.sql file to the docker-entrypoint-initdb.d directory -COPY ./initial/*.sql /docker-entrypoint-initdb.d/ - -# Expose the PostgreSQL port -EXPOSE 5432 -CMD ["-p", "5432"] \ No newline at end of file diff --git a/apps/db/dev-docker-compose.yml b/apps/db/dev-docker-compose.yml new file mode 100644 index 0000000..a33b36a --- /dev/null +++ b/apps/db/dev-docker-compose.yml @@ -0,0 +1,45 @@ + +services: + db: + image: postgres:16 + environment: + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + restart: unless-stopped + networks: + - dokploy-network + ports: + - "5433:5432" + volumes: + - dbdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] + interval: 1s + timeout: 5s + retries: 10 + migrate: + image: migrate/migrate:latest + depends_on: + db: + condition: service_healthy + environment: + - RECREATION_TOKEN=${RANDOM:-1} + volumes: + - ./migrations:/migrations:ro + networks: + - dokploy-network + command: + [ + "-path", "/migrations", + "-database", "postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable", + "up" + ] + restart: "no" + +networks: + dokploy-network: + external: true + +volumes: + dbdata: \ No newline at end of file diff --git a/apps/db/dev.sh b/apps/db/dev.sh new file mode 100644 index 0000000..6c3f479 --- /dev/null +++ b/apps/db/dev.sh @@ -0,0 +1,9 @@ +#!/bin/bash + + +docker compose -p infoalloggi-dev-db -f dev-docker-compose.yml rm -f migrate 2>/dev/null || true + +docker compose -p infoalloggi-dev-db -f dev-docker-compose.yml exec -T db psql -U "${POSTGRES_USER:-postgres}" -d "${POSTGRES_DB:-infoalloggi}" -c "TRUNCATE TABLE IF EXISTS schema_migrations;" 2>/dev/null || echo " schema_migrations table doesn't exist yet (first run)" + + +docker compose -p infoalloggi-dev-db -f dev-docker-compose.yml up -d diff --git a/apps/db/docker-compose.yml b/apps/db/docker-compose.yml deleted file mode 100644 index 5ef2aab..0000000 --- a/apps/db/docker-compose.yml +++ /dev/null @@ -1,34 +0,0 @@ - -services: - db: - build: - context: . - dockerfile: Dockerfile - args: - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_DB: ${POSTGRES_DB} - environment: - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_DB: ${POSTGRES_DB} - restart: always - networks: - - dokploy-network - expose: - - "5432" - volumes: - - dbdata:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] - interval: 1s - timeout: 5s - retries: 10 - - -networks: - dokploy-network: - external: true - -volumes: - dbdata: \ No newline at end of file diff --git a/apps/db/migrations/000_init.up.sql b/apps/db/migrations/000_init.up.sql new file mode 100644 index 0000000..55023b1 --- /dev/null +++ b/apps/db/migrations/000_init.up.sql @@ -0,0 +1,4 @@ +-- Extensions +CREATE EXTENSION IF NOT EXISTS adminpack WITH SCHEMA pg_catalog; + +COMMENT ON EXTENSION adminpack IS 'administrative functions for PostgreSQL'; \ No newline at end of file diff --git a/apps/db/migrations/001_users.up.sql b/apps/db/migrations/001_users.up.sql new file mode 100644 index 0000000..665b616 --- /dev/null +++ b/apps/db/migrations/001_users.up.sql @@ -0,0 +1,38 @@ +-- Users +CREATE TABLE IF NOT EXISTS public.users ( + id UUID DEFAULT gen_random_uuid () NOT NULL, + username TEXT NOT NULL, + email TEXT NOT NULL, + "isAdmin" boolean DEFAULT FALSE NOT NULL, + "isBlocked" boolean DEFAULT FALSE NOT NULL, + PASSWORD TEXT NOT NULL, + nome TEXT NOT NULL, + cognome TEXT NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, + reset_password_token TEXT, + reset_password_expires TIMESTAMP WITHOUT TIME ZONE, + telefono TEXT NOT NULL, + "isAdminMade" boolean DEFAULT FALSE, + "isVerified" boolean DEFAULT FALSE NOT NULL, + "verificationToken" TEXT, + "verificationTokenExpires" TIMESTAMP WITHOUT TIME ZONE, + salt TEXT NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.users +ADD CONSTRAINT users_pkey PRIMARY KEY (id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Unique Email +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conname = 'users_email_key' + ) THEN + ALTER TABLE public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/002_usersanagrafica.up.sql b/apps/db/migrations/002_usersanagrafica.up.sql new file mode 100644 index 0000000..7f15fd0 --- /dev/null +++ b/apps/db/migrations/002_usersanagrafica.up.sql @@ -0,0 +1,52 @@ +-- User Anagrafica +CREATE TABLE IF NOT EXISTS public.users_anagrafica ( + idanagrafica UUID DEFAULT gen_random_uuid () NOT NULL, + userid UUID NOT NULL, + luogo_nascita TEXT, + data_nascita TIMESTAMP WITHOUT TIME ZONE, + nazione_nascita TEXT, + codice_fiscale TEXT, + via_residenza TEXT, + civico_residenza TEXT, + comune_residenza TEXT, + provincia_residenza TEXT, + cap_residenza TEXT, + nazione_residenza TEXT, + sesso TEXT, + azienda boolean DEFAULT FALSE NOT NULL, + ragione_sociale TEXT, + sede_legale TEXT, + p_iva TEXT, + fatturazione_aziendale boolean DEFAULT FALSE NOT NULL, + codice_destinatario TEXT, + legale_rappresentante TEXT +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.users_anagrafica +ADD CONSTRAINT usersanagrafica_pkey PRIMARY KEY (idanagrafica); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Unique Userid +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conname = 'useranagrafica_user_key' + ) THEN + ALTER TABLE public.users_anagrafica + ADD CONSTRAINT useranagrafica_user_key UNIQUE (userid); + END IF; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'useranagrafica_user' + ) THEN + ALTER TABLE public.users_anagrafica + ADD CONSTRAINT useranagrafica_user + FOREIGN KEY (userid) REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/003_usersstorage.up.sql b/apps/db/migrations/003_usersstorage.up.sql new file mode 100644 index 0000000..28ff8e3 --- /dev/null +++ b/apps/db/migrations/003_usersstorage.up.sql @@ -0,0 +1,36 @@ +-- User Storage +CREATE TABLE IF NOT EXISTS public.users_storage ( + "userId" UUID NOT NULL, + "storageId" TEXT NOT NULL, + from_admin boolean DEFAULT FALSE NOT NULL, + user_storage_id UUID DEFAULT gen_random_uuid () NOT NULL +); +-- Primary Key +DO $$ +BEGIN + ALTER TABLE public.users_storage + ADD CONSTRAINT users_storage_pkey PRIMARY KEY (user_storage_id); +EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Unique UserId and StorageId +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'users_storage_user_storage_key' + ) THEN + ALTER TABLE public.users_storage + ADD CONSTRAINT users_storage_user_storage_key UNIQUE ("userId", "storageId"); + END IF; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'userstorage' + ) THEN + ALTER TABLE public.users_storage + ADD CONSTRAINT userstorage + FOREIGN KEY ("userId") REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/004_email.up.sql b/apps/db/migrations/004_email.up.sql new file mode 100644 index 0000000..1393a76 --- /dev/null +++ b/apps/db/migrations/004_email.up.sql @@ -0,0 +1,45 @@ +-- Emails +CREATE TABLE IF NOT EXISTS public.emails ( + id_email integer NOT NULL, + user_id UUID NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, + DATA json NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.emails +ADD CONSTRAINT emails_pkey PRIMARY KEY (id_email); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Sequence for id_email +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_sequences + WHERE schemaname = 'public' AND sequencename = 'emails_id_email_seq' + ) THEN + CREATE SEQUENCE public.emails_id_email_seq + AS integer + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; + END IF; +END $$; + +ALTER SEQUENCE public.emails_id_email_seq OWNED BY public.emails.id_email; + +-- Set default for id_email +ALTER TABLE public.emails +ALTER COLUMN id_email +SET DEFAULT nextval( + 'public.emails_id_email_seq'::regclass +); +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'email_user' + ) THEN + ALTER TABLE public.emails + ADD CONSTRAINT email_user + FOREIGN KEY (user_id) REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/005_annunci.up.sql b/apps/db/migrations/005_annunci.up.sql new file mode 100644 index 0000000..bbf4275 --- /dev/null +++ b/apps/db/migrations/005_annunci.up.sql @@ -0,0 +1,91 @@ +-- Annunci +CREATE TABLE IF NOT EXISTS public.annunci ( + id integer NOT NULL, + codice TEXT NOT NULL, + locatore TEXT, + numero TEXT, + idlocatore TEXT, + indirizzo TEXT, + civico TEXT, + comune TEXT, + cap TEXT, + provincia TEXT, + regione TEXT, + lat TEXT, + lon TEXT, + indirizzo_secondario TEXT, + civico_secondario TEXT, + lat_secondario TEXT, + lon_secondario TEXT, + tipo TEXT, + categorie TEXT [], + prezzo integer DEFAULT 0 NOT NULL, + anno TEXT, + classe TEXT, + mq numeric, + piano TEXT, + piano_palazzo integer, + unita_condominio integer, + numero_vani integer, + numero_camere integer, + numero_bagni integer, + numero_balconi integer, + numero_terrazzi integer, + numero_box integer, + numero_postiauto integer, + accessori TEXT [], + titolo_it TEXT, + desc_it TEXT, + titolo_en TEXT, + desc_en TEXT, + stato TEXT, + web boolean, + caratteristiche json, + homepage boolean, + url_video TEXT [], + email TEXT, + creato_il TIMESTAMP WITHOUT TIME ZONE, + modificato_il TIMESTAMP WITHOUT TIME ZONE, + consegna integer, + disponibile_da date, + permanenza INTEGER[], + persone TEXT [], + updated_at TIMESTAMP WITHOUT TIME ZONE +); + +COMMENT ON COLUMN public.annunci.caratteristiche IS '@type(Caratteristiche, ''src/utils/kanel-types.ts'', false, false, true)'; +-- Sequence for id +DO $$ BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_sequences + WHERE schemaname = 'public' AND sequencename = 'annunci_id_seq' + ) THEN + CREATE SEQUENCE public.annunci_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; + END IF; +END $$; + +ALTER SEQUENCE public.annunci_id_seq OWNED BY public.annunci.id; +-- Set default for id +ALTER TABLE public.annunci +ALTER COLUMN id +SET DEFAULT nextval( + 'public.annunci_id_seq'::regclass +); +-- Primary Key +DO $$ BEGIN ALTER TABLE public.annunci +ADD CONSTRAINT annunci_pkey PRIMARY KEY (id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Unique Codice +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conname = 'annunci_codice_key' + ) THEN + ALTER TABLE public.annunci + ADD CONSTRAINT annunci_codice_key UNIQUE (codice); + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/006_imagesref.up.sql b/apps/db/migrations/006_imagesref.up.sql new file mode 100644 index 0000000..86326ec --- /dev/null +++ b/apps/db/migrations/006_imagesref.up.sql @@ -0,0 +1,29 @@ +-- Image Refs +CREATE TABLE IF NOT EXISTS public.images_refs ( + codice TEXT NOT NULL, + ordine integer NOT NULL, + img TEXT NOT NULL, + thumb TEXT NOT NULL, + og_url TEXT NOT NULL +); +-- Unique Codice and Ordine +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conname = 'img_cod_order' + ) THEN + ALTER TABLE public.images_refs + ADD CONSTRAINT img_cod_order UNIQUE (codice, ordine); + END IF; +END $$; +-- Foreign Key to Annunci +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'cod_image' + ) THEN + ALTER TABLE public.images_refs + ADD CONSTRAINT cod_image + FOREIGN KEY (codice) REFERENCES public.annunci (codice) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/007_chats.up.sql b/apps/db/migrations/007_chats.up.sql new file mode 100644 index 0000000..d0d5343 --- /dev/null +++ b/apps/db/migrations/007_chats.up.sql @@ -0,0 +1,26 @@ +-- Chats +CREATE TABLE IF NOT EXISTS public.chats ( + chatid UUID DEFAULT gen_random_uuid () NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, + user_ref UUID NOT NULL, + tags TEXT [] +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.chats +ADD CONSTRAINT chats_pkey PRIMARY KEY (chatid); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'userchats' + ) THEN + ALTER TABLE public.chats + ADD CONSTRAINT userchats + FOREIGN KEY (user_ref) REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/008_etichette.up.sql b/apps/db/migrations/008_etichette.up.sql new file mode 100644 index 0000000..2af1c4e --- /dev/null +++ b/apps/db/migrations/008_etichette.up.sql @@ -0,0 +1,31 @@ +-- Etichette +CREATE TABLE IF NOT EXISTS public.etichette ( + id_etichetta integer NOT NULL, + title TEXT NOT NULL, + color_hex character varying(7) NOT NULL +); +-- Sequence for id_etichetta +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_sequences + WHERE schemaname = 'public' AND sequencename = 'etichette_id_etichetta_seq' + ) THEN + CREATE SEQUENCE public.etichette_id_etichetta_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; + END IF; +END $$; + +ALTER SEQUENCE public.etichette_id_etichetta_seq OWNED BY public.etichette.id_etichetta; +-- Set default for id_etichetta +ALTER TABLE public.etichette +ALTER COLUMN id_etichetta +SET DEFAULT nextval( + 'public.etichette_id_etichetta_seq'::regclass +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.etichette +ADD CONSTRAINT etichette_pkey PRIMARY KEY (id_etichetta); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/009_chatsetichette.up.sql b/apps/db/migrations/009_chatsetichette.up.sql new file mode 100644 index 0000000..091a6bf --- /dev/null +++ b/apps/db/migrations/009_chatsetichette.up.sql @@ -0,0 +1,35 @@ +-- Chats Etichette +CREATE TABLE IF NOT EXISTS public.chats_etichette ( + chatid UUID NOT NULL, + etichettaid integer NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.chats_etichette +ADD CONSTRAINT chats_etichette_pkey PRIMARY KEY (chatid, etichettaid); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Foreign Key to Chats +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'chat_etichetta_fkey' + ) THEN + ALTER TABLE public.chats_etichette + ADD CONSTRAINT chat_etichetta_fkey + FOREIGN KEY (chatid) REFERENCES public.chats (chatid) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Etichette +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'etichetta_chetich_fkey' + ) THEN + ALTER TABLE public.chats_etichette + ADD CONSTRAINT etichetta_chetich_fkey + FOREIGN KEY (etichettaid) REFERENCES public.etichette (id_etichetta) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/010_messages.up.sql b/apps/db/migrations/010_messages.up.sql new file mode 100644 index 0000000..5b20ec5 --- /dev/null +++ b/apps/db/migrations/010_messages.up.sql @@ -0,0 +1,39 @@ +-- Messages +CREATE TABLE IF NOT EXISTS public.messages ( + messageid UUID DEFAULT gen_random_uuid () NOT NULL, + chatid UUID NOT NULL, + message TEXT, + "time" TIMESTAMP WITHOUT TIME ZONE NOT NULL, + isread boolean DEFAULT FALSE NOT NULL, + sender UUID NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.messages +ADD CONSTRAINT messages_pkey PRIMARY KEY (messageid); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Foreign Key to Chats +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'messages_chatid_fkey' + ) THEN + ALTER TABLE public.messages + ADD CONSTRAINT messages_chatid_fkey + FOREIGN KEY (chatid) REFERENCES public.chats (chatid) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'messages_user_fkey' + ) THEN + ALTER TABLE public.messages + ADD CONSTRAINT messages_user_fkey + FOREIGN KEY (sender) REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/011_servizio.up.sql b/apps/db/migrations/011_servizio.up.sql new file mode 100644 index 0000000..4c792f9 --- /dev/null +++ b/apps/db/migrations/011_servizio.up.sql @@ -0,0 +1,89 @@ +-- Tipologia Enum +DO $$ BEGIN +CREATE TYPE public."TipologiaPosizioneEnum" AS ENUM ('Transitorio', 'Stabile'); +EXCEPTION + WHEN duplicate_object THEN NULL; +END $$; +-- Servizio Table +CREATE TABLE IF NOT EXISTS public.servizio ( + user_id UUID NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, + tipologia public."TipologiaPosizioneEnum" NOT NULL, + arredato boolean DEFAULT FALSE NOT NULL, + budget integer NOT NULL, + n_adulti integer NOT NULL, + n_minori integer NOT NULL, + animali boolean DEFAULT FALSE NOT NULL, + fumatori boolean DEFAULT FALSE NOT NULL, + giardino boolean DEFAULT FALSE NOT NULL, + parcheggio boolean DEFAULT FALSE NOT NULL, + terrazzo boolean DEFAULT FALSE NOT NULL, + ascensore boolean DEFAULT FALSE NOT NULL, + pianoterra boolean DEFAULT FALSE NOT NULL, + motivazione_transitorio TEXT, + reddito TEXT, + "isSent" boolean DEFAULT FALSE NOT NULL, + servizio_id UUID DEFAULT gen_random_uuid () NOT NULL, + decorrenza TIMESTAMP WITHOUT TIME ZONE, + "isInterrotto" boolean DEFAULT FALSE NOT NULL, + entromese integer, + permanenza integer, + "isOkAcconto" boolean DEFAULT FALSE NOT NULL, + "isOkSaldo" boolean DEFAULT FALSE NOT NULL, + "isOkConsulenza" boolean DEFAULT FALSE NOT NULL, + doc_personale_fronte_ref UUID, + doc_personale_retro_ref UUID, + doc_motivazione_ref UUID +); +-- Primary key +DO $$ BEGIN +ALTER TABLE public.servizio +ADD CONSTRAINT servizio_pkey PRIMARY KEY (servizio_id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'user_servizio' + ) THEN + ALTER TABLE public.servizio + ADD CONSTRAINT user_servizio + FOREIGN KEY (user_id) REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to User Storage +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'servizio_doc_fronte' + ) THEN + ALTER TABLE public.servizio + ADD CONSTRAINT servizio_doc_fronte + FOREIGN KEY (doc_personale_fronte_ref) REFERENCES public.users_storage (user_storage_id) + ON UPDATE CASCADE ON DELETE SET NULL; + END IF; +END $$; +-- Foreign Key to User Storage +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'servizio_doc_retro' + ) THEN + ALTER TABLE public.servizio + ADD CONSTRAINT servizio_doc_retro + FOREIGN KEY (doc_personale_retro_ref) REFERENCES public.users_storage (user_storage_id) + ON UPDATE CASCADE ON DELETE SET NULL; + END IF; +END $$; +-- Foreign Key to User Storage +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'servizio_doc_motivazione' + ) THEN + ALTER TABLE public.servizio + ADD CONSTRAINT servizio_doc_motivazione + FOREIGN KEY (doc_motivazione_ref) REFERENCES public.users_storage (user_storage_id) + ON UPDATE CASCADE ON DELETE SET NULL; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/012_serviziointeressi.up.sql b/apps/db/migrations/012_serviziointeressi.up.sql new file mode 100644 index 0000000..9835566 --- /dev/null +++ b/apps/db/migrations/012_serviziointeressi.up.sql @@ -0,0 +1,37 @@ +-- Servizio Interessi Table +CREATE TABLE IF NOT EXISTS public.servizio_interessi ( + "annuncioId" integer NOT NULL, + "userId" UUID NOT NULL +); +-- Unique Constraint +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conname = 'unique_interest' + ) THEN + ALTER TABLE public.servizio_interessi + ADD CONSTRAINT unique_interest UNIQUE ("annuncioId", "userId"); + END IF; +END $$; +-- Foreign Key to Annunci +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'interesse_annuncio' + ) THEN + ALTER TABLE public.servizio_interessi + ADD CONSTRAINT interesse_annuncio + FOREIGN KEY ("annuncioId") REFERENCES public.annunci (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'interesse_user' + ) THEN + ALTER TABLE public.servizio_interessi + ADD CONSTRAINT interesse_user + FOREIGN KEY ("userId") REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/013_servizioannunci.up.sql b/apps/db/migrations/013_servizioannunci.up.sql new file mode 100644 index 0000000..d90c419 --- /dev/null +++ b/apps/db/migrations/013_servizioannunci.up.sql @@ -0,0 +1,56 @@ +-- Servizio Annunci +CREATE TABLE IF NOT EXISTS public.servizio_annunci ( + servizio_id UUID NOT NULL, + annunci_id integer NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, + open_contatti_at TIMESTAMP WITHOUT TIME ZONE, + doc_conferma_ref TEXT, + user_confirmed_at TIMESTAMP WITHOUT TIME ZONE, + accettato_conferma_at TIMESTAMP WITHOUT TIME ZONE, + caparra_causale TEXT, + caparra_iban TEXT, + caparra_importo TEXT, + caparra_intestazione TEXT, + "hasConfermaAdmin" boolean DEFAULT FALSE NOT NULL, + doc_contratto_ref TEXT, + gestionale_id integer, + contratto_decorrenza date, + contratto_scadenza date, + contratto_tipo TEXT, + doc_registrazione_ref TEXT, + doc_conferma_added boolean DEFAULT FALSE NOT NULL, + doc_contratto_added boolean DEFAULT FALSE NOT NULL, + doc_registrazione_added boolean DEFAULT FALSE NOT NULL +); +-- Unique Constraint +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conname = 'uniq_annuncio_servizio' + ) THEN + ALTER TABLE public.servizio_annunci + ADD CONSTRAINT uniq_annuncio_servizio UNIQUE (annunci_id, servizio_id); + END IF; +END $$; +-- Foreign Key to Annunci +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'servizio_annuncio_J_annuncio' + ) THEN + ALTER TABLE public.servizio_annunci + ADD CONSTRAINT servizio_annuncio_J_annuncio + FOREIGN KEY (annunci_id) REFERENCES public.annunci (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Servizio +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'servizio_annuncio_J_servizio' + ) THEN + ALTER TABLE public.servizio_annunci + ADD CONSTRAINT servizio_annuncio_J_servizio + FOREIGN KEY (servizio_id) REFERENCES public.servizio (servizio_id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/014_prezziario.up.sql b/apps/db/migrations/014_prezziario.up.sql new file mode 100644 index 0000000..271adf3 --- /dev/null +++ b/apps/db/migrations/014_prezziario.up.sql @@ -0,0 +1,25 @@ +-- Prezziario +CREATE TABLE IF NOT EXISTS public.prezziario ( + idprezziario TEXT NOT NULL, + prezzo_cent integer NOT NULL, + testo_condizioni TEXT, + "isActive" boolean DEFAULT TRUE NOT NULL, + nome_it TEXT NOT NULL, + nome_en TEXT NOT NULL, + desc_it TEXT NOT NULL, + desc_en TEXT NOT NULL, + sconto integer DEFAULT 0 NOT NULL, + "isAcconto" boolean DEFAULT FALSE NOT NULL, + "isSaldo" boolean DEFAULT FALSE NOT NULL, + "isConsulenza" boolean DEFAULT FALSE NOT NULL, + "isStabile" boolean DEFAULT FALSE NOT NULL, + "isTransitorio" boolean DEFAULT FALSE NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.prezziario +ADD CONSTRAINT prezziario_pkey PRIMARY KEY (idprezziario); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/015_ordini.up.sql b/apps/db/migrations/015_ordini.up.sql new file mode 100644 index 0000000..71506dd --- /dev/null +++ b/apps/db/migrations/015_ordini.up.sql @@ -0,0 +1,62 @@ +-- Ordini Type +DO $$ BEGIN +CREATE TYPE public."OrderTypeEnum" AS ENUM ( + 'Acconto', + 'Saldo', + 'Consulenza', + 'Altro' +); +EXCEPTION + WHEN duplicate_object THEN NULL; +END $$; +-- Ordini Table +CREATE TABLE IF NOT EXISTS public.ordini ( + ordine_id UUID DEFAULT gen_random_uuid () NOT NULL, + userid UUID NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, + packid TEXT NOT NULL, + servizio_id UUID NOT NULL, + type public."OrderTypeEnum" NOT NULL, + "isActive" boolean DEFAULT FALSE NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.ordini +ADD CONSTRAINT ordini2_pkey PRIMARY KEY (ordine_id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Foreign Key to Prezziario +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'ordine_pack_fkey' + ) THEN + ALTER TABLE public.ordini + ADD CONSTRAINT ordine_pack_fkey + FOREIGN KEY (packid) REFERENCES public.prezziario (idprezziario) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Servizio +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'ordine_servizio_fkey' + ) THEN + ALTER TABLE public.ordini + ADD CONSTRAINT ordine_servizio_fkey + FOREIGN KEY (servizio_id) REFERENCES public.servizio (servizio_id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'ordine_userid_fkey' + ) THEN + ALTER TABLE public.ordini + ADD CONSTRAINT ordine_userid_fkey + FOREIGN KEY (userid) REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/016_payments.up.sql b/apps/db/migrations/016_payments.up.sql new file mode 100644 index 0000000..bfa590d --- /dev/null +++ b/apps/db/migrations/016_payments.up.sql @@ -0,0 +1,61 @@ +-- Payments Status Enum +DO $$ BEGIN + CREATE TYPE public."PaymentStatusEnum" AS ENUM ('processing', 'success', 'failed'); +EXCEPTION + WHEN duplicate_object THEN NULL; +END $$; +-- Payments Table +CREATE TABLE IF NOT EXISTS public.payments ( + id UUID DEFAULT gen_random_uuid () NOT NULL, + userid UUID NOT NULL, + amount_cent integer NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, + paymentmethod TEXT, + paymentname TEXT NOT NULL, + paid_at TIMESTAMP WITHOUT TIME ZONE, + intent_id TEXT, + paymentstatus public."PaymentStatusEnum", + servizio_id UUID NOT NULL, + ordine_id UUID NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.payments +ADD CONSTRAINT payments_pkey PRIMARY KEY (id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Foreign Key to Ordini +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'payments_ordine_fkey' + ) THEN + ALTER TABLE public.payments + ADD CONSTRAINT payments_ordine_fkey + FOREIGN KEY (ordine_id) REFERENCES public.ordini (ordine_id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Servizio +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'payments_servizio_fkey' + ) THEN + ALTER TABLE public.payments + ADD CONSTRAINT payments_servizio_fkey + FOREIGN KEY (servizio_id) REFERENCES public.servizio (servizio_id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; +-- Foreign Key to Users +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 FROM pg_constraint + WHERE conname = 'payments_userid_fkey' + ) THEN + ALTER TABLE public.payments + ADD CONSTRAINT payments_userid_fkey + FOREIGN KEY (userid) REFERENCES public.users (id) + ON UPDATE CASCADE ON DELETE CASCADE; + END IF; +END $$; \ No newline at end of file diff --git a/apps/db/migrations/017_misc.up.sql b/apps/db/migrations/017_misc.up.sql new file mode 100644 index 0000000..83cd61a --- /dev/null +++ b/apps/db/migrations/017_misc.up.sql @@ -0,0 +1,139 @@ +-- Banlist Type Enum +DO $$ BEGIN + CREATE TYPE public."BanType" AS ENUM ('ip', 'email', 'phone', 'cf'); + +EXCEPTION WHEN duplicate_object THEN NULL; +END $$; +-- Banlist Table +CREATE TABLE IF NOT EXISTS public.banlist ( + id integer NOT NULL, + VALUE TEXT NOT NULL, + type public."BanType" NOT NULL +); +-- Sequence for Banlist ID +DO $$ BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_sequences + WHERE schemaname = 'public' AND sequencename = 'banlist_id_seq' + ) THEN + CREATE SEQUENCE public.banlist_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; + END IF; +END $$; + +ALTER SEQUENCE public.banlist_id_seq OWNED BY public.banlist.id; +-- Set default for Banlist ID +ALTER TABLE public.banlist +ALTER COLUMN id +SET DEFAULT nextval( + 'public.banlist_id_seq'::regclass +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.banlist +ADD CONSTRAINT banlist_pkey PRIMARY KEY (id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Unique Constraint on type and VALUE +DO $$ BEGIN IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conname = 'banlist_typeval' + ) THEN + ALTER TABLE public.banlist + ADD CONSTRAINT banlist_typeval UNIQUE (type, VALUE); + END IF; +END $$; +-- Banners Table +CREATE TABLE IF NOT EXISTS public.banners ( + idbanner TEXT NOT NULL, + titolo TEXT, + testo TEXT, + is_unskippable boolean NOT NULL, + has_cta boolean NOT NULL, + cta_href TEXT, + cta_icon TEXT, + cta_text TEXT, + color TEXT, + is_active boolean NOT NULL, + show_public boolean NOT NULL, + show_private boolean NOT NULL, + hide_duration integer +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.banners +ADD CONSTRAINT banners_pkey PRIMARY KEY (idbanner); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Event Queue Table +CREATE TABLE IF NOT EXISTS public.event_queue ( + event_id integer NOT NULL, + lock_expires TIMESTAMP WITH TIME ZONE NOT NULL, + DATA jsonb, + status TEXT DEFAULT 'pending'::TEXT NOT NULL +); +-- Sequence for event_id +DO $$ BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_sequences + WHERE schemaname = 'public' AND sequencename = 'event_queue_event_id_seq' + ) THEN + CREATE SEQUENCE public.event_queue_event_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; + END IF; +END $$; + +ALTER SEQUENCE public.event_queue_event_id_seq OWNED BY public.event_queue.event_id; +-- Set default for event_id +ALTER TABLE public.event_queue +ALTER COLUMN event_id +SET DEFAULT nextval( + 'public.event_queue_event_id_seq'::regclass +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.event_queue +ADD CONSTRAINT event_queue_pkey PRIMARY KEY (event_id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Flags Table +CREATE TABLE IF NOT EXISTS public.flags ( + id TEXT NOT NULL, + VALUE TEXT NOT NULL +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.flags +ADD CONSTRAINT sitesettings_pkey PRIMARY KEY (id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Testi e Stringhe Table +CREATE TABLE IF NOT EXISTS public.testi_e_stringhe ( + stinga_id TEXT NOT NULL, + stringa_value TEXT +); +-- Primary Key +DO $$ BEGIN +ALTER TABLE public.testi_e_stringhe +ADD CONSTRAINT testi_e_stringhe_pkey PRIMARY KEY (stinga_id); + EXCEPTION + WHEN invalid_table_definition THEN + RAISE NOTICE 'Primary key already exists. Ignoring...'; +END $$; +-- Rate Limiter Table +CREATE TABLE IF NOT EXISTS public.ratelimiter ( + KEY TEXT NOT NULL, + request_timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, + request_count integer NOT NULL +); +-- Index on KEY +CREATE INDEX IF NOT EXISTS ratelimiter_key_index ON public.ratelimiter USING btree (KEY); \ No newline at end of file diff --git a/apps/db/migrations/2_data.up.sql b/apps/db/migrations/018_data.up.sql similarity index 91% rename from apps/db/migrations/2_data.up.sql rename to apps/db/migrations/018_data.up.sql index e80f409..3bf8607 100644 --- a/apps/db/migrations/2_data.up.sql +++ b/apps/db/migrations/018_data.up.sql @@ -1,4 +1,4 @@ --- Data for Name: banners +-- Data for Name: banners (idempotent) INSERT INTO public.banners ( idbanner, @@ -44,9 +44,24 @@ VALUES ( TRUE, FALSE, 30 - ); + ) +ON CONFLICT (idbanner) DO +UPDATE +SET + titolo = EXCLUDED.titolo, + testo = EXCLUDED.testo, + is_unskippable = EXCLUDED.is_unskippable, + has_cta = EXCLUDED.has_cta, + cta_href = EXCLUDED.cta_href, + cta_icon = EXCLUDED.cta_icon, + cta_text = EXCLUDED.cta_text, + color = EXCLUDED.color, + is_active = EXCLUDED.is_active, + show_public = EXCLUDED.show_public, + show_private = EXCLUDED.show_private, + hide_duration = EXCLUDED.hide_duration; --- Data for Name: etichette +-- Data for Name: etichette (idempotent) INSERT INTO public.etichette ( id_etichetta, @@ -56,20 +71,29 @@ INSERT INTO VALUES (1, 'testggergerg', '#027b00'), (9, 'F', '#090bfd'), (8, 'Marzia', '#ffed00'), - (10, 'W', '#13e96f'); + (10, 'W', '#13e96f') +ON CONFLICT (id_etichetta) DO +UPDATE +SET + title = EXCLUDED.title, + color_hex = EXCLUDED.color_hex; --- Data for Name: flags +-- Data for Name: flags (idempotent) INSERT INTO public.flags (id, VALUE) VALUES ( 'ANNUNCIO_INTERACTIONS_DISABLED', - FALSE + 'false' ), - ('ONLY_OAUTH', FALSE), - ('SMS_OFF', TRUE), - ('EMAIL_OFF', FALSE); + ('ONLY_OAUTH', 'false'), + ('SMS_OFF', 'true'), + ('EMAIL_OFF', 'false') +ON CONFLICT (id) DO +UPDATE +SET + VALUE = EXCLUDED.value; --- Data for Name: prezziario +-- Data for Name: prezziario (idempotent) INSERT INTO public.prezziario ( idprezziario, @@ -406,9 +430,25 @@ VALUES ( FALSE, TRUE, FALSE - ); + ) +ON CONFLICT (idprezziario) DO +UPDATE +SET + prezzo_cent = EXCLUDED.prezzo_cent, + testo_condizioni = EXCLUDED.testo_condizioni, + "isActive" = EXCLUDED."isActive", + nome_it = EXCLUDED.nome_it, + nome_en = EXCLUDED.nome_en, + desc_it = EXCLUDED.desc_it, + desc_en = EXCLUDED.desc_en, + sconto = EXCLUDED.sconto, + "isAcconto" = EXCLUDED."isAcconto", + "isSaldo" = EXCLUDED."isSaldo", + "isConsulenza" = EXCLUDED."isConsulenza", + "isStabile" = EXCLUDED."isStabile", + "isTransitorio" = EXCLUDED."isTransitorio"; --- Data for Name: testi_e_stringhe +-- Data for Name: testi_e_stringhe (idempotent) INSERT INTO public.testi_e_stringhe (stinga_id, stringa_value) VALUES ( @@ -434,4 +474,8 @@ VALUES ( ( 'PRIVACY_POLICY_ENG', '

Legal Notice and Privacy Policy

Information on the Processing of Personal Data

This page describes how this website is managed...

' - ); \ No newline at end of file + ) +ON CONFLICT (stinga_id) DO +UPDATE +SET + stringa_value = EXCLUDED.stringa_value; \ No newline at end of file diff --git a/apps/db/migrations/3_seed_user.up.sql b/apps/db/migrations/019_seed_user.up.sql similarity index 100% rename from apps/db/migrations/3_seed_user.up.sql rename to apps/db/migrations/019_seed_user.up.sql diff --git a/apps/db/migrations/1_init.up.sql b/apps/db/migrations/1_init.up.sql deleted file mode 100644 index 18276e1..0000000 --- a/apps/db/migrations/1_init.up.sql +++ /dev/null @@ -1,802 +0,0 @@ -CREATE EXTENSION IF NOT EXISTS adminpack WITH SCHEMA pg_catalog; - --- --- Name: EXTENSION adminpack; Type: COMMENT; Schema: -; Owner: --- -COMMENT ON EXTENSION adminpack IS 'administrative functions for PostgreSQL'; - --- --- Name: BanType; Type: TYPE; Schema: public; Owner: postgres --- -CREATE TYPE public."BanType" AS ENUM ('ip', 'email', 'phone', 'cf'); - --- --- Name: GenericStatusEnum; Type: TYPE; Schema: public; Owner: postgres --- -CREATE TYPE public."GenericStatusEnum" AS ENUM ('pending', 'success', 'failed'); - --- --- Name: OrderTypeEnum; Type: TYPE; Schema: public; Owner: postgres --- -CREATE TYPE public."OrderTypeEnum" AS ENUM ( - 'Acconto', - 'Saldo', - 'Consulenza', - 'Altro' -); - --- --- Name: PaymentStatusEnum; Type: TYPE; Schema: public; Owner: postgres --- -CREATE TYPE public."PaymentStatusEnum" AS ENUM ('processing', 'success', 'failed'); - --- --- Name: TipologiaPosizioneEnum; Type: TYPE; Schema: public; Owner: postgres --- -CREATE TYPE public."TipologiaPosizioneEnum" AS ENUM ('Transitorio', 'Stabile'); - --- --- Name: annunci; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.annunci ( - id integer NOT NULL, - codice TEXT NOT NULL, - locatore TEXT, - numero TEXT, - idlocatore TEXT, - indirizzo TEXT, - civico TEXT, - comune TEXT, - cap TEXT, - provincia TEXT, - regione TEXT, - lat TEXT, - lon TEXT, - indirizzo_secondario TEXT, - civico_secondario TEXT, - lat_secondario TEXT, - lon_secondario TEXT, - tipo TEXT, - categorie TEXT [], - prezzo integer DEFAULT 0 NOT NULL, - anno TEXT, - classe TEXT, - mq numeric, - piano TEXT, - piano_palazzo integer, - unita_condominio integer, - numero_vani integer, - numero_camere integer, - numero_bagni integer, - numero_balconi integer, - numero_terrazzi integer, - numero_box integer, - numero_postiauto integer, - accessori TEXT [], - titolo_it TEXT, - desc_it TEXT, - titolo_en TEXT, - desc_en TEXT, - stato TEXT, - web boolean, - caratteristiche json, - homepage boolean, - url_video TEXT [], - email TEXT, - creato_il TIMESTAMP WITHOUT TIME ZONE, - modificato_il TIMESTAMP WITHOUT TIME ZONE, - consegna integer, - disponibile_da date, - permanenza INTEGER[], - persone TEXT [], - updated_at TIMESTAMP WITHOUT TIME ZONE -); - --- --- Name: COLUMN annunci.caratteristiche; Type: COMMENT; Schema: public; Owner: postgres --- -COMMENT ON COLUMN public.annunci.caratteristiche IS '@type(Caratteristiche, ''src/utils/kanel-types.ts'', false, false, true)'; - --- --- Name: annunci_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -CREATE SEQUENCE public.annunci_id_seq AS integer START -WITH - 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - --- --- Name: annunci_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres --- -ALTER SEQUENCE public.annunci_id_seq OWNED BY public.annunci.id; - --- --- Name: banlist; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.banlist ( - id integer NOT NULL, - VALUE TEXT NOT NULL, - type public."BanType" NOT NULL -); - --- --- Name: banlist_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -CREATE SEQUENCE public.banlist_id_seq AS integer START -WITH - 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - --- --- Name: banlist_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres --- -ALTER SEQUENCE public.banlist_id_seq OWNED BY public.banlist.id; - --- --- Name: banners; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.banners ( - idbanner TEXT NOT NULL, - titolo TEXT, - testo TEXT, - is_unskippable boolean NOT NULL, - has_cta boolean NOT NULL, - cta_href TEXT, - cta_icon TEXT, - cta_text TEXT, - color TEXT, - is_active boolean NOT NULL, - show_public boolean NOT NULL, - show_private boolean NOT NULL, - hide_duration integer -); - -ALTER TABLE public.banners OWNER TO postgres; - --- --- Name: chats; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.chats ( - chatid UUID DEFAULT gen_random_uuid () NOT NULL, - created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, - user_ref UUID NOT NULL, - tags TEXT [] -); - --- --- Name: chats_etichette; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.chats_etichette ( - chatid UUID NOT NULL, - etichettaid integer NOT NULL -); - --- --- Name: emails; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.emails ( - id_email integer NOT NULL, - user_id UUID NOT NULL, - created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, - DATA json NOT NULL -); - --- --- Name: emails_id_email_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -CREATE SEQUENCE public.emails_id_email_seq AS integer START -WITH - 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - --- --- Name: emails_id_email_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres --- -ALTER SEQUENCE public.emails_id_email_seq OWNED BY public.emails.id_email; - --- --- Name: etichette; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.etichette ( - id_etichetta integer NOT NULL, - title TEXT NOT NULL, - color_hex character varying(7) NOT NULL -); - --- --- Name: etichette_id_etichetta_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -CREATE SEQUENCE public.etichette_id_etichetta_seq AS integer START -WITH - 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - --- --- Name: etichette_id_etichetta_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres --- -ALTER SEQUENCE public.etichette_id_etichetta_seq OWNED BY public.etichette.id_etichetta; - --- --- Name: event_queue; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.event_queue ( - event_id integer NOT NULL, - lock_expires TIMESTAMP WITH TIME ZONE NOT NULL, - DATA jsonb, - status TEXT DEFAULT 'pending'::TEXT NOT NULL -); - --- --- Name: event_queue_event_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -CREATE SEQUENCE public.event_queue_event_id_seq AS integer START -WITH - 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - --- --- Name: event_queue_event_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres --- -ALTER SEQUENCE public.event_queue_event_id_seq OWNED BY public.event_queue.event_id; - --- --- Name: flags; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.flags ( id TEXT NOT NULL, VALUE TEXT NOT NULL ); - --- --- Name: images_refs; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.images_refs ( - codice TEXT NOT NULL, - ordine integer NOT NULL, - img TEXT NOT NULL, - thumb TEXT NOT NULL, - og_url TEXT NOT NULL -); - --- --- Name: messages; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.messages ( - messageid UUID DEFAULT gen_random_uuid () NOT NULL, - chatid UUID NOT NULL, - message TEXT, - "time" TIMESTAMP WITHOUT TIME ZONE NOT NULL, - isread boolean DEFAULT FALSE NOT NULL, - sender UUID NOT NULL -); - --- --- Name: ordini; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.ordini ( - ordine_id UUID DEFAULT gen_random_uuid () NOT NULL, - userid UUID NOT NULL, - created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, - packid TEXT NOT NULL, - servizio_id UUID NOT NULL, - type public."OrderTypeEnum" NOT NULL, - "isActive" boolean DEFAULT FALSE NOT NULL -); - --- --- Name: payments; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.payments ( - id UUID DEFAULT gen_random_uuid () NOT NULL, - userid UUID NOT NULL, - amount_cent integer NOT NULL, - created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, - paymentmethod TEXT, - paymentname TEXT NOT NULL, - paid_at TIMESTAMP WITHOUT TIME ZONE, - intent_id TEXT, - paymentstatus public."PaymentStatusEnum", - servizio_id UUID NOT NULL, - ordine_id UUID NOT NULL -); - --- --- Name: prezziario; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.prezziario ( - idprezziario TEXT NOT NULL, - prezzo_cent integer NOT NULL, - testo_condizioni TEXT, - "isActive" boolean DEFAULT TRUE NOT NULL, - nome_it TEXT NOT NULL, - nome_en TEXT NOT NULL, - desc_it TEXT NOT NULL, - desc_en TEXT NOT NULL, - sconto integer DEFAULT 0 NOT NULL, - "isAcconto" boolean DEFAULT FALSE NOT NULL, - "isSaldo" boolean DEFAULT FALSE NOT NULL, - "isConsulenza" boolean DEFAULT FALSE NOT NULL, - "isStabile" boolean DEFAULT FALSE NOT NULL, - "isTransitorio" boolean DEFAULT FALSE NOT NULL -); - --- --- Name: ratelimiter; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.ratelimiter ( - KEY TEXT NOT NULL, - request_timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, - request_count integer NOT NULL -); - --- --- Name: servizio; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.servizio ( - user_id UUID NOT NULL, - created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, - tipologia public."TipologiaPosizioneEnum" NOT NULL, - arredato boolean DEFAULT FALSE NOT NULL, - budget integer NOT NULL, - n_adulti integer NOT NULL, - n_minori integer NOT NULL, - animali boolean DEFAULT FALSE NOT NULL, - fumatori boolean DEFAULT FALSE NOT NULL, - giardino boolean DEFAULT FALSE NOT NULL, - parcheggio boolean DEFAULT FALSE NOT NULL, - terrazzo boolean DEFAULT FALSE NOT NULL, - ascensore boolean DEFAULT FALSE NOT NULL, - pianoterra boolean DEFAULT FALSE NOT NULL, - motivazione_transitorio TEXT, - reddito TEXT, - "isSent" boolean DEFAULT FALSE NOT NULL, - servizio_id UUID DEFAULT gen_random_uuid () NOT NULL, - decorrenza TIMESTAMP WITHOUT TIME ZONE, - "isInterrotto" boolean DEFAULT FALSE NOT NULL, - entromese integer, - permanenza integer, - "isOkAcconto" boolean DEFAULT FALSE NOT NULL, - "isOkSaldo" boolean DEFAULT FALSE NOT NULL, - "isOkConsulenza" boolean DEFAULT FALSE NOT NULL, - doc_personale_fronte_ref UUID, - doc_personale_retro_ref UUID, - doc_motivazione_ref UUID -); - --- --- Name: servizio_annunci; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.servizio_annunci ( - servizio_id UUID NOT NULL, - annunci_id integer NOT NULL, - created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, - open_contatti_at TIMESTAMP WITHOUT TIME ZONE, - doc_conferma_ref TEXT, - user_confirmed_at TIMESTAMP WITHOUT TIME ZONE, - accettato_conferma_at TIMESTAMP WITHOUT TIME ZONE, - caparra_causale TEXT, - caparra_iban TEXT, - caparra_importo TEXT, - caparra_intestazione TEXT, - "hasConfermaAdmin" boolean DEFAULT FALSE NOT NULL, - doc_contratto_ref TEXT, - gestionale_id integer, - contratto_decorrenza date, - contratto_scadenza date, - contratto_tipo TEXT, - doc_registrazione_ref TEXT, - doc_conferma_added boolean DEFAULT FALSE NOT NULL, - doc_contratto_added boolean DEFAULT FALSE NOT NULL, - doc_registrazione_added boolean DEFAULT FALSE NOT NULL -); - --- --- Name: servizio_interessi; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.servizio_interessi ( - "annuncioId" integer NOT NULL, - "userId" UUID NOT NULL -); - --- --- Name: testi_e_stringhe; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.testi_e_stringhe ( - stinga_id TEXT NOT NULL, - stringa_value TEXT -); - --- --- Name: users; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.users ( - id UUID DEFAULT gen_random_uuid () NOT NULL, - username TEXT NOT NULL, - email TEXT NOT NULL, - "isAdmin" boolean DEFAULT FALSE NOT NULL, - "isBlocked" boolean DEFAULT FALSE NOT NULL, - PASSWORD TEXT NOT NULL, - nome TEXT NOT NULL, - cognome TEXT NOT NULL, - created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, - reset_password_token TEXT, - reset_password_expires TIMESTAMP WITHOUT TIME ZONE, - telefono TEXT NOT NULL, - "isAdminMade" boolean DEFAULT FALSE, - "isVerified" boolean DEFAULT FALSE NOT NULL, - "verificationToken" TEXT, - "verificationTokenExpires" TIMESTAMP WITHOUT TIME ZONE, - salt TEXT NOT NULL -); - --- --- Name: users_anagrafica; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.users_anagrafica ( - idanagrafica UUID DEFAULT gen_random_uuid () NOT NULL, - userid UUID NOT NULL, - luogo_nascita TEXT, - data_nascita TIMESTAMP WITHOUT TIME ZONE, - nazione_nascita TEXT, - codice_fiscale TEXT, - via_residenza TEXT, - civico_residenza TEXT, - comune_residenza TEXT, - provincia_residenza TEXT, - cap_residenza TEXT, - nazione_residenza TEXT, - sesso TEXT, - azienda boolean DEFAULT FALSE NOT NULL, - ragione_sociale TEXT, - sede_legale TEXT, - p_iva TEXT, - fatturazione_aziendale boolean DEFAULT FALSE NOT NULL, - codice_destinatario TEXT, - legale_rappresentante TEXT -); - --- --- Name: users_storage; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE public.users_storage ( - "userId" UUID NOT NULL, - "storageId" TEXT NOT NULL, - from_admin boolean DEFAULT FALSE NOT NULL, - user_storage_id UUID DEFAULT gen_random_uuid () NOT NULL -); - --- --- Name: annunci id; Type: DEFAULT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.annunci -ALTER COLUMN id -SET DEFAULT nextval( - 'public.annunci_id_seq'::regclass -); - --- --- Name: banlist id; Type: DEFAULT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.banlist -ALTER COLUMN id -SET DEFAULT nextval( - 'public.banlist_id_seq'::regclass -); - --- --- Name: emails id_email; Type: DEFAULT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.emails -ALTER COLUMN id_email -SET DEFAULT nextval( - 'public.emails_id_email_seq'::regclass -); - --- --- Name: etichette id_etichetta; Type: DEFAULT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.etichette -ALTER COLUMN id_etichetta -SET DEFAULT nextval( - 'public.etichette_id_etichetta_seq'::regclass -); - --- --- Name: event_queue event_id; Type: DEFAULT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.event_queue -ALTER COLUMN event_id -SET DEFAULT nextval( - 'public.event_queue_event_id_seq'::regclass -); - --- --- Name: annunci annunci_codice_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.annunci -ADD CONSTRAINT annunci_codice_key UNIQUE (codice); - --- --- Name: annunci annunci_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.annunci -ADD CONSTRAINT annunci_pkey PRIMARY KEY (id); - --- --- Name: banlist banlist_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.banlist -ADD CONSTRAINT banlist_pkey PRIMARY KEY (id); - --- --- Name: banners banners_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.banners -ADD CONSTRAINT banners_pkey PRIMARY KEY (idbanner); - --- --- Name: chats_etichette chats_etichette_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.chats_etichette -ADD CONSTRAINT chats_etichette_pkey PRIMARY KEY (chatid, etichettaid); - --- --- Name: chats chats_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.chats -ADD CONSTRAINT chats_pkey PRIMARY KEY (chatid); - --- --- Name: emails emails_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.emails -ADD CONSTRAINT emails_pkey PRIMARY KEY (id_email); - --- --- Name: etichette etichette_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.etichette -ADD CONSTRAINT etichette_pkey PRIMARY KEY (id_etichetta); - --- --- Name: event_queue event_queue_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.event_queue -ADD CONSTRAINT event_queue_pkey PRIMARY KEY (event_id); - --- --- Name: images_refs img_cod_order; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.images_refs -ADD CONSTRAINT img_cod_order UNIQUE (codice, ordine); - --- --- Name: messages messages_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.messages -ADD CONSTRAINT messages_pkey PRIMARY KEY (messageid); - --- --- Name: ordini ordini2_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.ordini -ADD CONSTRAINT ordini2_pkey PRIMARY KEY (ordine_id); - --- --- Name: payments payments2_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.payments -ADD CONSTRAINT payments2_pkey PRIMARY KEY (id); - --- --- Name: prezziario prezziario2_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.prezziario -ADD CONSTRAINT prezziario2_pkey PRIMARY KEY (idprezziario); - --- --- Name: servizio servizio_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio -ADD CONSTRAINT servizio_pkey PRIMARY KEY (servizio_id); - --- --- Name: flags sitesettings_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.flags -ADD CONSTRAINT sitesettings_pkey PRIMARY KEY (id); - --- --- Name: testi_e_stringhe testi_e_stringhe_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.testi_e_stringhe -ADD CONSTRAINT testi_e_stringhe_pkey PRIMARY KEY (stinga_id); - --- --- Name: banlist typeval; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.banlist -ADD CONSTRAINT typeval UNIQUE (type, VALUE); - --- --- Name: servizio_annunci uniq_annuncio_servizio; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio_annunci -ADD CONSTRAINT uniq_annuncio_servizio UNIQUE (annunci_id, servizio_id); - --- --- Name: users_storage unique_user_storage; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users_storage -ADD CONSTRAINT unique_user_storage UNIQUE ("userId", "storageId"); - --- --- Name: servizio_interessi uniqui_interest; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio_interessi -ADD CONSTRAINT uniqui_interest UNIQUE ("annuncioId", "userId"); - --- --- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users -ADD CONSTRAINT users_email_key UNIQUE (email); - --- --- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users -ADD CONSTRAINT users_pkey PRIMARY KEY (id); - --- --- Name: users_storage users_storage_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users_storage -ADD CONSTRAINT users_storage_pkey PRIMARY KEY (user_storage_id); - --- --- Name: users_anagrafica usersanagrafica2_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users_anagrafica -ADD CONSTRAINT usersanagrafica2_pkey PRIMARY KEY (idanagrafica); - --- --- Name: users_anagrafica usserunique2; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users_anagrafica -ADD CONSTRAINT usserunique2 UNIQUE (userid); - --- --- Name: ratelimiter_key_index; Type: INDEX; Schema: public; Owner: postgres --- -CREATE INDEX ratelimiter_key_index ON public.ratelimiter USING btree (KEY); - --- --- Name: chats_etichette chat_etichetta_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.chats_etichette -ADD CONSTRAINT chat_etichetta_fkey FOREIGN KEY (chatid) REFERENCES public.chats (chatid) ON UPDATE CASCADE ON DELETE CASCADE; - --- --- Name: images_refs cod_image; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.images_refs -ADD CONSTRAINT cod_image FOREIGN KEY (codice) REFERENCES public.annunci (codice); - --- --- Name: emails email_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.emails -ADD CONSTRAINT email_user FOREIGN KEY (user_id) REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE; - --- --- Name: chats_etichette etichetta_chetich_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.chats_etichette -ADD CONSTRAINT etichetta_chetich_fkey FOREIGN KEY (etichettaid) REFERENCES public.etichette (id_etichetta) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: servizio_interessi interesse_annuncio; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio_interessi -ADD CONSTRAINT interesse_annuncio FOREIGN KEY ("annuncioId") REFERENCES public.annunci (id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: servizio_interessi interesse_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio_interessi -ADD CONSTRAINT interesse_user FOREIGN KEY ("userId") REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: messages messages_chatid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.messages -ADD CONSTRAINT messages_chatid_fkey FOREIGN KEY (chatid) REFERENCES public.chats (chatid) ON DELETE CASCADE; - --- --- Name: messages messages_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.messages -ADD CONSTRAINT messages_user_fkey FOREIGN KEY (sender) REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE; - --- --- Name: ordini ordine2_pack_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.ordini -ADD CONSTRAINT ordine2_pack_fkey FOREIGN KEY (packid) REFERENCES public.prezziario (idprezziario) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: ordini ordine2_servizio_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.ordini -ADD CONSTRAINT ordine2_servizio_fkey FOREIGN KEY (servizio_id) REFERENCES public.servizio (servizio_id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: ordini ordine2_userid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.ordini -ADD CONSTRAINT ordine2_userid_fkey FOREIGN KEY (userid) REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: payments payments2_ordine_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.payments -ADD CONSTRAINT payments2_ordine_fkey FOREIGN KEY (ordine_id) REFERENCES public.ordini (ordine_id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: payments payments2_servizio_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.payments -ADD CONSTRAINT payments2_servizio_fkey FOREIGN KEY (servizio_id) REFERENCES public.servizio (servizio_id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: payments payments2_userid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.payments -ADD CONSTRAINT payments2_userid_fkey FOREIGN KEY (userid) REFERENCES public.users (id) ON DELETE CASCADE; - --- --- Name: servizio_annunci servizio_annuncio_J_annuncio; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio_annunci -ADD CONSTRAINT "servizio_annuncio_J_annuncio" FOREIGN KEY (annunci_id) REFERENCES public.annunci (id) ON UPDATE CASCADE ON DELETE CASCADE; - --- --- Name: servizio_annunci servizio_annuncio_J_servizio; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio_annunci -ADD CONSTRAINT "servizio_annuncio_J_servizio" FOREIGN KEY (servizio_id) REFERENCES public.servizio (servizio_id) ON UPDATE CASCADE ON DELETE CASCADE; - --- --- Name: servizio servizio_doc_fronte; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio -ADD CONSTRAINT servizio_doc_fronte FOREIGN KEY (doc_personale_fronte_ref) REFERENCES public.users_storage (user_storage_id) ON UPDATE CASCADE ON DELETE SET NULL NOT VALID; - --- --- Name: servizio servizio_doc_motivazione; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio -ADD CONSTRAINT servizio_doc_motivazione FOREIGN KEY (doc_motivazione_ref) REFERENCES public.users_storage (user_storage_id) ON UPDATE CASCADE ON DELETE SET NULL NOT VALID; - --- --- Name: servizio servizio_doc_retro; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio -ADD CONSTRAINT servizio_doc_retro FOREIGN KEY (doc_personale_retro_ref) REFERENCES public.users_storage (user_storage_id) ON UPDATE CASCADE ON DELETE SET NULL NOT VALID; - --- --- Name: servizio user_servizio; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.servizio -ADD CONSTRAINT user_servizio FOREIGN KEY (user_id) REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE; - --- --- Name: chats userchats; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.chats -ADD CONSTRAINT userchats FOREIGN KEY (user_ref) REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: users_anagrafica useridfkeyanagrafica2; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users_anagrafica -ADD CONSTRAINT useridfkeyanagrafica2 FOREIGN KEY (userid) REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; - --- --- Name: users_storage userstorage; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE ONLY public.users_storage -ADD CONSTRAINT userstorage FOREIGN KEY ("userId") REFERENCES public.users (id) ON UPDATE CASCADE ON DELETE CASCADE; \ No newline at end of file