-- 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 $$;