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.
31 lines
1.3 KiB
31 lines
1.3 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, |
|
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) |
|
);
|
|
|