You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

32 lines
1.4 KiB

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