CREATE TABLE pietanze (
    id SERIAL PRIMARY KEY,
    nome VARCHAR(150) NOT NULL,
    descrizione TEXT,
    allergeni JSONB, -- Array di allergeni: ["glutine", "lattosio", ...]
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE pasti (
    id SERIAL PRIMARY KEY,
    data_pasto DATE NOT NULL,
    tipo_pasto VARCHAR(20) DEFAULT 'pranzo', -- Add missing column referenced in UNIQUE constraint
    portate JSONB, -- Lista di portate e relative pietanze con numero di prenotazioni massime (se 0 nessun limite): {"primo": {1: 100, 2: 50}, "secondo": {3: 100, 4: 50}, ...}
    disponibile BOOLEAN DEFAULT true,
    turni JSONB, -- Dizionario con i turni di prenotazione e posti massimi disponibili (se 0 nessun limite): {"12:45": 100, "13:00": 100, ...}
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(data_pasto, tipo_pasto)
);

CREATE TABLE prenotazioni (
    id SERIAL PRIMARY KEY,
    user_id VARCHAR(100) NOT NULL, -- Estratto dal JWT
    pasto_id INTEGER REFERENCES pasti(id) ON DELETE CASCADE,
    pietanze_selezionate JSONB, -- Lista di pietanze scelte per il pasto: [1, 2, 3]
    note TEXT,
    stato VARCHAR(20) DEFAULT 'attiva', -- Stati: 'attiva', 'servita', 'pagata', 'annullata'
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(user_id, pasto_id)
);
