<?php
/**
 * Migrație: tabel categorii + FK din products.
 *
 * eMAG returnează `category_id` (ex: 2773) la fiecare produs. Vrem:
 *   - Un tabel `categories` cu un rând per categorie eMAG (deduplicat)
 *   - `products.category_id` care leagă produsul la categoria internă
 *   - Setări per categorie: custom_name (override), notes, is_excluded
 *
 * Categoriile excluse (is_excluded=1) → produsele din ele sunt complet ignorate la sync.
 * Vechiul câmp text `products.category` rămâne pe loc ca fallback denormalizat.
 */
return function (PDO $db): void {

    $db->exec("
        CREATE TABLE categories (
            id                INTEGER PRIMARY KEY AUTOINCREMENT,
            emag_category_id  INTEGER NULL UNIQUE,
            name              TEXT    NOT NULL,
            custom_name       TEXT    NULL,
            notes             TEXT    NULL,
            is_excluded       INTEGER NOT NULL DEFAULT 0,
            created_at        TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP,
            updated_at        TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP
        )
    ");
    $db->exec("CREATE INDEX idx_categories_emag_id  ON categories(emag_category_id)");
    $db->exec("CREATE INDEX idx_categories_excluded ON categories(is_excluded)");

    $db->exec("
        CREATE TRIGGER trg_categories_updated
        AFTER UPDATE ON categories
        FOR EACH ROW
        BEGIN
            UPDATE categories SET updated_at = CURRENT_TIMESTAMP WHERE id = OLD.id;
        END
    ");

    // ALTER products: adăugăm FK soft (REFERENCES funcționează din SQLite 3.3+
    // cu PRAGMA foreign_keys=ON, deja setat în db.php).
    $db->exec("ALTER TABLE products ADD COLUMN category_id INTEGER NULL REFERENCES categories(id) ON DELETE SET NULL");
    $db->exec("CREATE INDEX idx_products_category_id ON products(category_id)");
};
