<?php
/**
 * Sistem de șabloane pentru numele produselor.
 *
 * Schimbări:
 *   - products.phone_series_id  → leagă produsul de o serie (Apple > iPhone > 13 Pro)
 *   - products.custom_name      → numele generat manual sau prin template
 *                                 IMPORTANT: rămâne separat de `product_name` (numele eMAG),
 *                                 deci sync-ul NU îl atinge.
 *   - name_templates            → tabel pentru șabloane reutilizabile
 *
 * Placeholders suportate la apply: {brand}, {model}, {series}, {ean}, {pnk},
 *                                  {cod_oblio}, {pn} (Cod produs PN), {name} (numele eMAG)
 *
 * Sync flow după acest update:
 *   - product_name = numele din eMAG (overwritten la fiecare sync)
 *   - custom_name  = numele tău (păstrat permanent)
 *   - În UI afișăm: custom_name dacă există, altfel product_name
 */
return function (PDO $db): void {

    // 1. Link la phone_series + nume custom păstrat
    $db->exec("ALTER TABLE products ADD COLUMN phone_series_id INTEGER NULL REFERENCES phone_series(id) ON DELETE SET NULL");
    $db->exec("CREATE INDEX idx_products_phone_series ON products(phone_series_id)");
    $db->exec("ALTER TABLE products ADD COLUMN custom_name TEXT NULL");

    // 2. Tabel șabloane
    $db->exec("
        CREATE TABLE name_templates (
            id          INTEGER PRIMARY KEY AUTOINCREMENT,
            name        TEXT    NOT NULL,
            template    TEXT    NOT NULL,
            description TEXT    NULL,
            created_at  TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP,
            updated_at  TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP
        )
    ");
    $db->exec("
        CREATE TRIGGER trg_name_templates_updated
        AFTER UPDATE ON name_templates
        FOR EACH ROW
        BEGIN
            UPDATE name_templates SET updated_at = CURRENT_TIMESTAMP WHERE id = OLD.id;
        END
    ");

    // 3. Câteva șabloane default ca exemplu
    $defaults = [
        ['Husa silicon',  'Husa silicon pentru {brand} {model} {series}'],
        ['Folie sticla',  'Folie sticla securizata pentru {brand} {model} {series}'],
        ['Cu cod intern', '{brand} {model} {series} - {pn}'],
    ];
    $stmt = $db->prepare("INSERT INTO name_templates (name, template) VALUES (?, ?)");
    foreach ($defaults as [$n, $t]) {
        $stmt->execute([$n, $t]);
    }
};
