diff --git a/api/database.php b/api/database.php index d684bd5..492041f 100644 --- a/api/database.php +++ b/api/database.php @@ -336,13 +336,97 @@ if (empty($locTables)) { is_builtin INTEGER DEFAULT 0 ); "); - $db->exec("INSERT INTO locations (key, label, icon, sort_order, is_builtin) VALUES + +$db->exec("INSERT INTO locations (key, label, icon, sort_order, is_builtin) VALUES ('dispensa', 'Dispensa', '🗄️', 1, 1), ('frigo', 'Frigo', '🧊', 2, 1), ('freezer', 'Freezer', '❄️', 3, 1), ('altro', 'Altro', '📦', 4, 1) "); } + +// Custom subcategories table (v2.0) — sous-catégories par catégorie, gérables depuis Config +$subcatTables = $db->query("SELECT name FROM sqlite_master WHERE type='table' AND name='subcategories'")->fetchAll(); +if (empty($subcatTables)) { + $db->exec(" + CREATE TABLE subcategories ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + category TEXT NOT NULL, + key TEXT NOT NULL, + label TEXT NOT NULL, + sort_order INTEGER DEFAULT 0, + UNIQUE(category, key) + ); + "); + $db->exec("INSERT INTO subcategories (category, key, label, sort_order) VALUES + ('latticini', 'lait', '🥛 Lait', 1), + ('latticini', 'yaourt', '🥣 Yaourt', 2), + ('latticini', 'fromage', '🧀 Fromage', 3), + ('latticini', 'beurre', '🧈 Beurre', 4), + ('latticini', 'creme', '🍦 Crème', 5), + ('latticini', 'oeufs', '🥚 Œufs', 6), + ('latticini', 'autre', '📦 Autre', 7), + ('carne', 'poulet', '🍗 Poulet', 1), + ('carne', 'boeuf', '🐄 Bœuf', 2), + ('carne', 'porc', '🐖 Porc', 3), + ('carne', 'agneau', '🐑 Agneau', 4), + ('carne', 'charcuterie', '🥓 Charcuterie', 5), + ('carne', 'autre', '📦 Autre', 6), + ('pesce', 'poisson_frais', '🐟 Poisson frais', 1), + ('pesce', 'poisson_surgele', '🧊 Poisson surgelé', 2), + ('pesce', 'fruits_mer', '🦐 Fruits de mer', 3), + ('pesce', 'conserve_poisson', '🥫 Conserve', 4), + ('pesce', 'autre', '📦 Autre', 5), + ('frutta', 'agrumes', '🍊 Agrumes', 1), + ('frutta', 'baies', '🫐 Baies', 2), + ('frutta', 'fruits_noyau', '🍑 Fruits à noyau', 3), + ('frutta', 'fruits_tropicaux', '🍍 Fruits tropicaux', 4), + ('frutta', 'autre', '📦 Autre', 5), + ('verdura', 'legumes_feuilles', '🥬 Légumes feuilles', 1), + ('verdura', 'legumes_racines', '🥕 Légumes racines', 2), + ('verdura', 'legumineuses_fraiches', '🌱 Légumineuses fraîches', 3), + ('verdura', 'autre', '📦 Autre', 4), + ('pasta', 'pates', '🍝 Pâtes', 1), + ('pasta', 'riz', '🍚 Riz', 2), + ('pasta', 'semoule', '🌾 Semoule', 3), + ('pasta', 'autre', '📦 Autre', 4), + ('pane', 'pain_frais', '🍞 Pain frais', 1), + ('pane', 'biscottes', '🥖 Biscottes', 2), + ('pane', 'viennoiserie', '🥐 Viennoiserie', 3), + ('pane', 'autre', '📦 Autre', 4), + ('surgelati', 'plats_prepares', '🍱 Plats préparés', 1), + ('surgelati', 'legumes_surgeles', '🧊 Légumes surgelés', 2), + ('surgelati', 'glaces', '🍨 Glaces', 3), + ('surgelati', 'viande_poisson_surgele', '🧊 Viande/poisson surgelé', 4), + ('surgelati', 'autre', '📦 Autre', 5), + ('bevande', 'vin', '🍷 Vin', 1), + ('bevande', 'biere', '🍺 Bière', 2), + ('bevande', 'spiritueux', '🥃 Spiritueux', 3), + ('bevande', 'soda', '🥤 Soda', 4), + ('bevande', 'jus', '🧃 Jus', 5), + ('bevande', 'eau', '💧 Eau', 6), + ('bevande', 'autre', '📦 Autre', 7), + ('condimenti', 'huile', '🫒 Huile', 1), + ('condimenti', 'vinaigre', '🍶 Vinaigre', 2), + ('condimenti', 'sauce', '🥫 Sauce', 3), + ('condimenti', 'epice', '🌿 Épice', 4), + ('condimenti', 'autre', '📦 Autre', 5), + ('snack', 'chocolat', '🍫 Chocolat', 1), + ('snack', 'biscuit', '🍪 Biscuit', 2), + ('snack', 'chips', '🥔 Chips', 3), + ('snack', 'bonbon', '🍬 Bonbon', 4), + ('snack', 'autre', '📦 Autre', 5), + ('conserve', 'legumes_conserve', '🥫 Légumes', 1), + ('conserve', 'fruits_conserve', '🥫 Fruits', 2), + ('conserve', 'poisson_conserve', '🥫 Poisson', 3), + ('conserve', 'confiture', '🍯 Confiture', 4), + ('conserve', 'autre', '📦 Autre', 5), + ('cereali', 'cereales_petitdej', '🥣 Céréales petit-déj', 1), + ('cereali', 'legumineuses_seches', '🫘 Légumineuses sèches', 2), + ('cereali', 'farine', '🌾 Farine', 3), + ('cereali', 'autre', '📦 Autre', 4) + "); +} // Internal shopping list table (v1.8.0) — used when SHOPPING_MODE=internal $shopTables = $db->query("SELECT name FROM sqlite_master WHERE type='table' AND name='shopping_list'")->fetchAll();