-- PS_Launcher schema v2
-- Ajoute deux flags par-license :
--   * channel : nom du manifest à servir (NULL = default = manifest/versions.json)
--   * can_see_betas : autorise la license à voir les versions taggées isBeta=true
--
-- À jouer après 001_init.sql.
--
-- IDEMPOTENCE : OVH mutualisé peut tourner sur MariaDB pré-10.0.2 où
-- ALTER TABLE ... IF NOT EXISTS n'existe pas. On contourne avec une PROCEDURE
-- temporaire qui consulte INFORMATION_SCHEMA avant chaque ALTER. Comme ça la
-- migration peut être re-jouée sans erreur sur n'importe quelle version
-- MariaDB / MySQL 5.5+.

DROP PROCEDURE IF EXISTS ps_launcher_migrate_002;

DELIMITER $$
CREATE PROCEDURE ps_launcher_migrate_002()
BEGIN
    -- channel
    IF NOT EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'licenses' AND COLUMN_NAME = 'channel'
    ) THEN
        ALTER TABLE licenses ADD COLUMN channel VARCHAR(64) NULL AFTER max_machines;
    END IF;

    -- can_see_betas
    IF NOT EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'licenses' AND COLUMN_NAME = 'can_see_betas'
    ) THEN
        ALTER TABLE licenses ADD COLUMN can_see_betas TINYINT(1) NOT NULL DEFAULT 0 AFTER channel;
    END IF;

    -- index sur channel (une simple recherche bénéficie peu mais c'est pas cher)
    IF NOT EXISTS (
        SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
        WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'licenses' AND INDEX_NAME = 'idx_channel'
    ) THEN
        ALTER TABLE licenses ADD INDEX idx_channel (channel);
    END IF;
END $$
DELIMITER ;

CALL ps_launcher_migrate_002();
DROP PROCEDURE ps_launcher_migrate_002;

-- Note : pas de migration de data. Les licenses existantes gardent
-- channel = NULL (= manifest default) et can_see_betas = 0 (= pas d'accès aux betas).
-- L'admin attribue manuellement les flags via la page licenses.php.
