diff --git a/db.js b/db.js index 161494d..e95716a 100644 --- a/db.js +++ b/db.js @@ -6,7 +6,7 @@ const db = new sqlite3.Database(path.join(__dirname, 'cocktails.db'), (err) => { else console.log('Connected to SQLite'); }); -// Crea tabella se non esiste +// 1) Tabella cocktail (come già avevi) db.run(` CREATE TABLE IF NOT EXISTS cocktails ( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -26,4 +26,74 @@ db.run(` ) `); -module.exports = db; \ No newline at end of file +// 2) Tabella ingredienti normalizzati +db.run(` + CREATE TABLE IF NOT EXISTS ingredients ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + category TEXT, + style TEXT, + abv REAL + ) +`); + +// 3) Relazione cocktail–ingredienti +db.run(` + CREATE TABLE IF NOT EXISTS cocktail_ingredients ( + cocktail_id INTEGER NOT NULL, + ingredient_id INTEGER NOT NULL, + amount TEXT, + unit TEXT, + order_index INTEGER, + PRIMARY KEY (cocktail_id, ingredient_id), + FOREIGN KEY (cocktail_id) REFERENCES cocktails(id), + FOREIGN KEY (ingredient_id) REFERENCES ingredients(id) + ) +`); + +// 4) Tabella inventario bottiglie (con codice a barre) +db.run(` + CREATE TABLE IF NOT EXISTS inventory_items ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + ingredient_id INTEGER NOT NULL, + brand TEXT, + label_name TEXT, + barcode TEXT, + bottle_size_ml INTEGER, + bottle_type TEXT, + origin_country TEXT, + region TEXT, + style TEXT, + abv REAL, + + current_level_fraction REAL DEFAULT 1.0, + current_level_ml REAL, + condition TEXT, + location TEXT, + storage_notes TEXT, + is_active INTEGER DEFAULT 1, + opened_at TEXT, + + purchase_price REAL, + purchase_currency TEXT, + purchase_date TEXT, + supplier TEXT, + + par_level_bottles REAL, + reorder_point_bottles REAL, + reorder_qty_bottles REAL, + status TEXT, + last_count_at TEXT, + + is_collectible INTEGER DEFAULT 0, + personal_rating REAL, + tasting_notes TEXT, + + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT, + + FOREIGN KEY (ingredient_id) REFERENCES ingredients(id) + ) +`); + +module.exports = db;