-- Schéma de base de données pour l'application TV Signage (multi-clients + admin+)
--
-- Un seul site/base de données peut héberger plusieurs clients, chacun avec
-- ses propres vidéos, ses propres comptes admin et son propre journal de
-- diffusion. Un compte "Admin+" (is_superadmin = 1) peut naviguer entre
-- tous les clients et gérer leurs utilisateurs.

CREATE TABLE IF NOT EXISTS clients (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(150) NOT NULL,             -- nom lisible (ex: "Boulangerie Durdu Jérôme")
    slug VARCHAR(100) NOT NULL UNIQUE,      -- identifiant court (ex: "durdu-jerome"), utile en test local
    domain VARCHAR(255) DEFAULT NULL,       -- sous-domaine dédié au player de ce client
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS admin_users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    client_id INT DEFAULT NULL,             -- NULL pour un compte Admin+ (accès à tous les clients)
    is_superadmin TINYINT(1) NOT NULL DEFAULT 0,
    username VARCHAR(100) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS videos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    client_id INT NOT NULL,
    filename VARCHAR(255) NOT NULL,
    original_name VARCHAR(255) NOT NULL,
    thumbnail VARCHAR(255) NOT NULL,
    is_selected TINYINT(1) NOT NULL DEFAULT 0,
    position INT NOT NULL DEFAULT 0,
    uploaded_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Journal de diffusion : une ligne par vidéo effectivement jouée sur une TV
CREATE TABLE IF NOT EXISTS video_plays (
    id INT AUTO_INCREMENT PRIMARY KEY,
    client_id INT NOT NULL,
    video_id INT DEFAULT NULL,              -- NULL si la vidéo a depuis été supprimée
    video_name VARCHAR(255) NOT NULL,       -- copie du nom, pour garder l'historique lisible
    played_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE CASCADE,
    FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE SET NULL,
    INDEX idx_client_day (client_id, played_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Les clients et comptes admin ne sont PAS créés ici : utilise
-- setup-admin.php une fois (pour le tout premier compte Admin+), puis
-- crée les clients suivants directement depuis l'interface Admin+.
-- Supprime setup-admin.php du serveur une fois le premier compte créé.
