<?php
/**
 * Sesiuni de schimbare titluri.
 *
 * Workflow:
 *   1. User creează o sesiune (ex: „Rebranding husele iPhone — Mai 2026")
 *   2. Adaugă produse în sesiune (din pagina Produse → bulk action)
 *      → fiecare item primește snapshot al numelui curent (old_title) + new_title editabil
 *   3. Editează new_title per item (manual sau auto-prin template în viitor)
 *   4. „Trimite la eMAG" → API request product_offer/save pentru fiecare item
 *      → fiecare item primește status (success/failed) + sent_at + error_message
 *
 * Sesiunile rămân ca istoric chiar și după trimitere — poți vedea ce ai modificat când.
 */
return function (PDO $db): void {

    $db->exec("
        CREATE TABLE title_sessions (
            id          INTEGER PRIMARY KEY AUTOINCREMENT,
            name        TEXT    NOT NULL,
            description TEXT    NULL,
            status      TEXT    NOT NULL DEFAULT 'draft'
                         CHECK(status IN ('draft','queued','sending','completed','partial','failed')),
            created_at  TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP,
            updated_at  TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP,
            sent_at     TEXT    NULL
        )
    ");
    $db->exec("
        CREATE TRIGGER trg_title_sessions_updated
        AFTER UPDATE ON title_sessions
        FOR EACH ROW
        BEGIN
            UPDATE title_sessions SET updated_at = CURRENT_TIMESTAMP WHERE id = OLD.id;
        END
    ");

    $db->exec("
        CREATE TABLE title_session_items (
            id            INTEGER PRIMARY KEY AUTOINCREMENT,
            session_id    INTEGER NOT NULL REFERENCES title_sessions(id) ON DELETE CASCADE,
            product_id    INTEGER NULL     REFERENCES products(id)       ON DELETE SET NULL,
            -- snapshot la momentul adăugării în sesiune
            old_title     TEXT    NULL,
            emag_id       TEXT    NULL,
            ean           TEXT    NULL,
            part_number   TEXT    NULL,
            pnk           TEXT    NULL,
            -- ce vrem să trimitem
            new_title     TEXT    NOT NULL,
            -- rezultatul trimiterii
            sent_status   TEXT    NOT NULL DEFAULT 'pending'
                           CHECK(sent_status IN ('pending','sending','success','failed','skipped')),
            sent_at       TEXT    NULL,
            error_message TEXT    NULL,
            created_at    TEXT    NOT NULL DEFAULT CURRENT_TIMESTAMP,
            UNIQUE(session_id, product_id)
        )
    ");
    $db->exec("CREATE INDEX idx_tsi_session ON title_session_items(session_id)");
    $db->exec("CREATE INDEX idx_tsi_product ON title_session_items(product_id)");
    $db->exec("CREATE INDEX idx_tsi_status  ON title_session_items(sent_status)");
};
