100 lines
2.3 KiB
JavaScript
100 lines
2.3 KiB
JavaScript
const sqlite3 = require('sqlite3').verbose();
|
||
const path = require('path');
|
||
|
||
const db = new sqlite3.Database(path.join(__dirname, 'cocktails.db'), (err) => {
|
||
if (err) console.error('DB error:', err);
|
||
else console.log('Connected to SQLite');
|
||
});
|
||
|
||
// 1) Tabella cocktail (come già avevi)
|
||
db.run(`
|
||
CREATE TABLE IF NOT EXISTS cocktails (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
slug TEXT NOT NULL UNIQUE,
|
||
nome TEXT NOT NULL,
|
||
autore TEXT,
|
||
luogo TEXT,
|
||
anno TEXT,
|
||
ingredienti TEXT NOT NULL,
|
||
metodo TEXT,
|
||
bicchiere TEXT,
|
||
ghiaccio TEXT,
|
||
garnish TEXT,
|
||
note TEXT,
|
||
image TEXT,
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
)
|
||
`);
|
||
|
||
// 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;
|