-- On créer la base de donnée si elle n'existe déjà aps
CREATE DATABASE IF NOT EXISTS portfolio

-- On créer un utilisateur avec un mot de passe fort qui est à changer après execution dus script (voir bitwarden)
CREATE USER 'srv_portfolio'@'localhost' IDENTIFIED BY 'mdp';

-- On met les droits au compte sur la base portfolio à l'utilisateur
GRANT ALL ON portfolio.* TO 'srv_portfolio'@'localhost';

-- On actualise les permissions
FLUSH PRIVILEGES;

-- Création de la table user : (Généré par Beekeeper Studio : équivalent à dbGate)
CREATE TABLE IF NOT EXISTS users (
    id           INT UNSIGNED    NOT NULL AUTO_INCREMENT,
    username     VARCHAR(50)     NOT NULL,
    password     VARCHAR(255)    NOT NULL,  -- Je laisse ici de la place pour prévoir un futur hashage et sallage
    role         ENUM('admin', 'user') NOT NULL DEFAULT 'user',
    created_at   DATETIME        NULL DEFAULT NULL,
    last_login   DATETIME        NULL DEFAULT NULL,
 
    PRIMARY KEY (id),
    UNIQUE INDEX idx_username (username)
);

-- Création de la table projects : (Généré par Beekeeper Studio)
CREATE TABLE IF NOT EXISTS projects (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    tags VARCHAR(255) NULL,
    description TEXT NOT NULL,
    image_url VARCHAR(255) NOT NULL, -- Stockage de l'image par URL (exemple : par CDN)
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

-- Création de la table projects : (Généré par Beekeeper Studio)
CREATE TABLE IF NOT EXISTS experiences (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    xptype VARCHAR(100) NOT NULL,
    tags VARCHAR(255) NULL,
    description TEXT NOT NULL,
    duration VARCHAR(100) NOT NULL,
    image_url VARCHAR(255) NOT NULL,  -- Stockage de l'image par URL (exemple : par CDN)
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

-- Compte de test
INSERT INTO users (username, password, role)
VALUES ('admin', 'admin', 'admin');