-- Comuni Table
CREATE TABLE IF NOT EXISTS public.comuni (
    id serial NOT NULL,
    nome TEXT NOT NULL,
    sigla TEXT NOT NULL,
    catasto TEXT NOT NULL
);
-- Primary Key
DO $$ BEGIN
ALTER TABLE public.comuni
ADD CONSTRAINT comuni_pkey PRIMARY KEY (id);
    EXCEPTION
        WHEN invalid_table_definition THEN 
            RAISE NOTICE 'Primary key already exists. Ignoring...';
END $$;

CREATE INDEX IF NOT EXISTS idx_comuni_nome ON comuni (nome);

CREATE INDEX IF NOT EXISTS idx_comuni_sigla ON comuni (sigla);

CREATE INDEX IF NOT EXISTS idx_comuni_nome_sigla ON comuni (nome, sigla);

-- Provincie Table
CREATE TABLE IF NOT EXISTS public.provincie (
    id serial NOT NULL,
    nome TEXT NOT NULL,
    sigla TEXT NOT NULL
);
-- Primary Key
DO $$ BEGIN
ALTER TABLE public.provincie
ADD CONSTRAINT provincie_pkey PRIMARY KEY (id);
    EXCEPTION
        WHEN invalid_table_definition THEN 
            RAISE NOTICE 'Primary key already exists. Ignoring...';
END $$;

CREATE INDEX IF NOT EXISTS idx_provincie_sigla ON provincie (sigla);

CREATE INDEX IF NOT EXISTS idx_provincie_nome ON provincie (nome);

-- Nazioni Table
CREATE TABLE IF NOT EXISTS public.nazioni (
    id serial NOT NULL,
    nome TEXT NOT NULL,
    catasto TEXT NOT NULL
);

-- Primary Key
DO $$ BEGIN
ALTER TABLE public.nazioni
ADD CONSTRAINT nazioni_pkey PRIMARY KEY (id);
    EXCEPTION
        WHEN invalid_table_definition THEN 
            RAISE NOTICE 'Primary key already exists. Ignoring...';
END $$;

CREATE INDEX IF NOT EXISTS idx_nazioni_nome ON nazioni (nome);