-- 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'@'%' IDENTIFIED BY 'mdp';

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

-- 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,
    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,
    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,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

-- Compte de test (PLUS A JOUR METTRE UN HASH)
-- INSERT INTO users (username, password, role)
-- VALUES ('admin', 'admin', 'admin');
insert into `users` (`created_at`, `id`, `last_login`, `password`, `role`, `username`) 
values ('2026-06-08 11:10:21', 11, '2026-06-08 13:10:41', '$2y$12$x01fDqrHQEYIyj7MDHa72eRyl2j/n5cNq9sv3.FIiQCaRsB50Q4iK', 'admin', 'admin');

-- Ajout d'une collonne status pour les projets et les expériences pour pouvoir différencier les projets/expériences en cours, terminés ou à venir
ALTER TABLE projects
ADD COLUMN status VARCHAR(100) NULL AFTER title;
ALTER TABLE experiences
ADD COLUMN status VARCHAR(100) NULL AFTER title;