/**
 * Marknadsprofiler (i18n-spec §18–19, M6).
 *
 * Näringsdeklaration och allergenframhävning skiljer sig per marknad:
 * - EU/EES: energi i kJ + kcal, "salt" (inte natrium), 14 deklarationspliktiga allergener.
 * - US: kcal ("Calories"), natrium i mg, FDA "Big 9".
 * - CA: kcal, natrium, Health Canada-lista (senap ingår, selleri ingår inte).
 *
 * Beräkningen är ALLTID samma deterministiska motor – profilerna styr bara
 * VISNING och VILKA allergener som måste framhävas per marknad. Appens interna
 * allergensäkerhet (spec §61.2) filtrerar alltid på användarens egna allergier,
 * oavsett marknad – profilen kan aldrig slå av en spärr.
 */
import { boolean, pgTable, primaryKey, text, varchar } from "drizzle-orm/pg-core";
import { allergenEnum, createdAt, updatedAt } from "./_shared.js";

export const nutritionDisplayProfiles = pgTable("nutrition_display_profiles", {
  /** ISO 3166-1 alpha-2, "EU" som samlingsprofil och fallback. */
  regionCode: varchar("region_code", { length: 2 }).primaryKey(),
  /** Visa energi som: kcal, kj eller båda. */
  energyDisplay: text("energy_display", { enum: ["kcal", "kj", "both"] }).notNull(),
  /** Visa salt (g) eller natrium (mg). */
  saltDisplay: text("salt_display", { enum: ["salt", "sodium"] }).notNull(),
  /** Etikettnyckel för energi ("Energi", "Calories" …) – texten bor i i18n-resurser. */
  energyLabelKey: text("energy_label_key").notNull(),
  createdAt: createdAt(),
  updatedAt: updatedAt(),
});

export const allergenMarketRules = pgTable(
  "allergen_market_rules",
  {
    regionCode: varchar("region_code", { length: 2 }).notNull(),
    allergen: allergenEnum("allergen").notNull(),
    /** Måste framhävas i deklaration på denna marknad. */
    mustHighlight: boolean("must_highlight").notNull().default(true),
  },
  (t) => [primaryKey({ columns: [t.regionCode, t.allergen] })],
);
