// Food database + initial log state for Sugar Tracker

const FOOD_DB = [
  // name, category, servingLabel, natural g, added g
  { id: 'apple',       name: 'Apple, medium',         cat: 'Fruit',     serving: '1 apple (182g)',  nat: 19, add: 0 },
  { id: 'banana',      name: 'Banana',                cat: 'Fruit',     serving: '1 medium (118g)', nat: 14, add: 0 },
  { id: 'blueberries', name: 'Blueberries',           cat: 'Fruit',     serving: '1 cup (148g)',    nat: 15, add: 0 },
  { id: 'strawberry',  name: 'Strawberries',          cat: 'Fruit',     serving: '1 cup (152g)',    nat: 7,  add: 0 },
  { id: 'orange',      name: 'Orange',                cat: 'Fruit',     serving: '1 medium (131g)', nat: 12, add: 0 },
  { id: 'grapes',      name: 'Grapes, red',           cat: 'Fruit',     serving: '1 cup (151g)',    nat: 23, add: 0 },

  { id: 'milk',        name: 'Whole milk',            cat: 'Dairy',     serving: '1 cup (240ml)',   nat: 12, add: 0 },
  { id: 'yogurt-pl',   name: 'Greek yogurt, plain',   cat: 'Dairy',     serving: '¾ cup (170g)',    nat: 6,  add: 0 },
  { id: 'yogurt-va',   name: 'Greek yogurt, vanilla', cat: 'Dairy',     serving: '¾ cup (170g)',    nat: 7,  add: 13 },
  { id: 'ice-cream',   name: 'Vanilla ice cream',     cat: 'Dairy',     serving: '½ cup (66g)',     nat: 7,  add: 14 },

  { id: 'coke',        name: 'Coca-Cola',             cat: 'Drinks',    serving: '12 oz can',       nat: 0,  add: 39 },
  { id: 'oj',          name: 'Orange juice',          cat: 'Drinks',    serving: '8 oz (240ml)',    nat: 21, add: 0 },
  { id: 'latte',       name: 'Latte, oat milk',       cat: 'Drinks',    serving: '12 oz grande',    nat: 14, add: 0 },
  { id: 'kombucha',    name: 'Kombucha',              cat: 'Drinks',    serving: '16 oz bottle',    nat: 2,  add: 8 },
  { id: 'green-tea',   name: 'Green tea, unsweet.',   cat: 'Drinks',    serving: '8 oz cup',        nat: 0,  add: 0 },

  { id: 'granola',     name: 'Granola bar',           cat: 'Snacks',    serving: '1 bar (35g)',     nat: 3,  add: 9 },
  { id: 'protein-bar', name: 'Protein bar',           cat: 'Snacks',    serving: '1 bar (60g)',     nat: 2,  add: 15 },
  { id: 'cookie',      name: 'Chocolate chip cookie', cat: 'Snacks',    serving: '1 cookie (30g)',  nat: 2,  add: 14 },
  { id: 'dark-choc',   name: 'Dark chocolate 70%',    cat: 'Snacks',    serving: '1 oz (28g)',      nat: 0,  add: 7 },
  { id: 'almonds',     name: 'Almonds, raw',          cat: 'Snacks',    serving: '¼ cup (35g)',     nat: 2,  add: 0 },

  { id: 'oatmeal',     name: 'Oatmeal, plain',        cat: 'Breakfast', serving: '1 cup cooked',    nat: 1,  add: 0 },
  { id: 'cereal-fr',   name: 'Frosted Flakes',        cat: 'Breakfast', serving: '1 cup (40g)',     nat: 0,  add: 15 },
  { id: 'bagel',       name: 'Plain bagel',           cat: 'Breakfast', serving: '1 bagel (105g)',  nat: 2,  add: 5 },
  { id: 'pancake',     name: 'Pancakes w/ syrup',     cat: 'Breakfast', serving: '3 pancakes',      nat: 4,  add: 22 },

  { id: 'ketchup',     name: 'Ketchup',               cat: 'Condiments',serving: '1 tbsp (17g)',    nat: 1,  add: 3 },
  { id: 'bbq',         name: 'BBQ sauce',             cat: 'Condiments',serving: '2 tbsp (34g)',    nat: 2,  add: 11 },
  { id: 'honey',       name: 'Honey',                 cat: 'Condiments',serving: '1 tbsp (21g)',    nat: 17, add: 0 },
  { id: 'maple',       name: 'Maple syrup',           cat: 'Condiments',serving: '2 tbsp (40g)',    nat: 0,  add: 24 },

  { id: 'salad',       name: 'Mixed green salad',     cat: 'Meals',     serving: '1 bowl',          nat: 4,  add: 0 },
  { id: 'chicken',     name: 'Grilled chicken',       cat: 'Meals',     serving: '4 oz (113g)',     nat: 0,  add: 0 },
  { id: 'pasta',       name: 'Spaghetti marinara',    cat: 'Meals',     serving: '1 cup',           nat: 5,  add: 3 },
  { id: 'pizza',       name: 'Cheese pizza',          cat: 'Meals',     serving: '1 slice',         nat: 3,  add: 2 },
];

// Aggregate rows from the `entries` table into the daily-history shape
// TrendsScreen expects. Index 0 = today. Days with no entries produce
// zero-filled rows so the chart has a continuous x-axis.
function aggregateHistory(entries, goal = 25) {
  const localKey = (d) =>
    `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;

  const byDate = {};
  entries.forEach(e => {
    const d = new Date(e.logged_at);
    const key = localKey(d);
    if (!byDate[key]) byDate[key] = { nat: 0, add: 0, dow: d.getDay() };
    const qty = Number(e.qty) || 1;
    byDate[key].nat += (Number(e.natural_g) || 0) * qty;
    byDate[key].add += (Number(e.added_g) || 0) * qty;
  });

  const out = [];
  const today = new Date();
  today.setHours(0, 0, 0, 0);
  for (let i = 0; i < 365; i++) {
    const d = new Date(today);
    d.setDate(today.getDate() - i);
    const key = localKey(d);
    const row = byDate[key] || { nat: 0, add: 0, dow: d.getDay() };
    const nat = Math.round(row.nat);
    const add = Math.round(row.add);
    out.push({
      date: key,
      dow: row.dow,
      nat,
      add,
      total: nat + add,
      overGoal: add > goal,
    });
  }
  return out;
}

window.FOOD_DB = FOOD_DB;
window.aggregateHistory = aggregateHistory;
