<?php
/**
 * Migrație: ordine manuală în catalogul de marfă.
 *
 * Adaugă `position` pe goods, ca utilizatorul să poată muta articolele
 * (drag & drop sau tastând poziția). Backfill-ul păstrează exact ordinea
 * afișată până acum (active primele, apoi alfabetic), ca nimic să nu „sară”.
 */
return function (PDO $db): void {
    $cols = [];
    foreach ($db->query("PRAGMA table_info(goods)") as $c) {
        $cols[$c['name']] = true;
    }
    if (!isset($cols['position'])) {
        $db->exec("ALTER TABLE goods ADD COLUMN position INTEGER NOT NULL DEFAULT 0");
    }

    $ids = $db->query(
        "SELECT id FROM goods ORDER BY is_active DESC, name COLLATE NOCASE, id"
    )->fetchAll(PDO::FETCH_COLUMN);

    $upd = $db->prepare("UPDATE goods SET position = ? WHERE id = ?");
    foreach ($ids as $i => $id) {
        $upd->execute([$i + 1, $id]);
    }

    $db->exec("CREATE INDEX IF NOT EXISTS idx_goods_position ON goods(position)");
};
