-- Structure de base de données pour phpMyAdmin
-- Table pour les projets du portfolio

CREATE TABLE `projects` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titre` varchar(255) NOT NULL,
  `soustitre` varchar(255) NOT NULL,
  `paragraphe` text NOT NULL,
  `img` varchar(500) NOT NULL,
  `liencreation` varchar(500) DEFAULT NULL,
  `liengithub` varchar(500) DEFAULT NULL,
  `featured` tinyint(1) DEFAULT 0,
  `created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table pour les compétences/technologies
CREATE TABLE `competences` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `nom` (`nom`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table de liaison pour associer les projets aux compétences (relation many-to-many)
CREATE TABLE `project_competences` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `project_id` int(11) NOT NULL,
  `competence_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_project_competence` (`project_id`, `competence_id`),
  KEY `fk_project_competences_project` (`project_id`),
  KEY `fk_project_competences_competence` (`competence_id`),
  CONSTRAINT `fk_project_competences_competence` FOREIGN KEY (`competence_id`) REFERENCES `competences` (`id`) ON DELETE CASCADE,
  CONSTRAINT `fk_project_competences_project` FOREIGN KEY (`project_id`) REFERENCES `projects` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Insertion d'exemples de compétences
INSERT INTO `competences` (`nom`) VALUES
('React'),
('Node.js'),
('MongoDB'),
('Stripe'),
('CSS'),
('Next.js'),
('TypeScript'),
('Tailwind CSS'),
('Framer Motion'),
('React Native'),
('Firebase'),
('Redux'),
('Vue.js'),
('D3.js'),
('Python'),
('PostgreSQL'),
('Express'),
('Docker'),
('Redis'),
('JavaScript'),
('Canvas API'),
('Socket.io'),
('WebGL');

-- Insertion d'exemples de projets
INSERT INTO `projects` (`titre`, `soustitre`, `paragraphe`, `img`, `liencreation`, `liengithub`, `featured`) VALUES
('E-commerce Platform', 'Plateforme de vente en ligne moderne', 'Une plateforme e-commerce complète avec gestion des produits, panier d\'achats, système de paiement et tableau de bord administrateur. Développée avec React, Node.js et MongoDB.', 'https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?w=600&h=400&fit=crop', 'https://example-ecommerce.com', 'https://github.com/example/ecommerce', 1),
('Portfolio Interactif', 'Site web personnel avec animations', 'Portfolio personnel moderne avec des animations fluides, design responsive et section blog intégrée. Construit avec Next.js et Tailwind CSS pour des performances optimales.', 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=600&h=400&fit=crop', 'https://example-portfolio.com', 'https://github.com/example/portfolio', 1),
('Application Mobile', 'App de gestion de tâches', 'Application mobile cross-platform pour la gestion de tâches avec synchronisation cloud, notifications push et collaboration en équipe. Développée avec React Native.', 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=600&h=400&fit=crop', 'https://play.google.com/store/apps/details?id=com.example.taskapp', 'https://github.com/example/task-app', 0),
('Dashboard Analytics', 'Tableau de bord de données', 'Tableau de bord interactif pour l\'analyse de données avec graphiques en temps réel, filtres avancés et exports personnalisés. Interface moderne et intuitive.', 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=600&h=400&fit=crop', NULL, 'https://github.com/example/dashboard', 0),
('API RESTful', 'Microservices backend', 'Architecture microservices robuste avec API RESTful, authentification JWT, documentation Swagger et déploiement Docker. Conçue pour la scalabilité.', 'https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=600&h=400&fit=crop', 'https://api.example.com/docs', NULL, 0),
('Jeu Web Interactif', 'Game développé en JavaScript', 'Jeu de puzzle interactif avec système de scores, niveaux progressifs et multijoueur en temps réel. Graphismes 2D optimisés et effets sonores immersifs.', 'https://images.unsplash.com/photo-1511512578047-dfb367046420?w=600&h=400&fit=crop', 'https://example-game.com', 'https://github.com/example/web-game', 1);

-- Associations des compétences aux projets (exemples)
-- Projet E-commerce Platform (id=1)
INSERT INTO `project_competences` (`project_id`, `competence_id`) VALUES
(1, (SELECT id FROM competences WHERE nom = 'React')),
(1, (SELECT id FROM competences WHERE nom = 'Node.js')),
(1, (SELECT id FROM competences WHERE nom = 'MongoDB')),
(1, (SELECT id FROM competences WHERE nom = 'Stripe')),
(1, (SELECT id FROM competences WHERE nom = 'CSS'));

-- Projet Portfolio Interactif (id=2)
INSERT INTO `project_competences` (`project_id`, `competence_id`) VALUES
(2, (SELECT id FROM competences WHERE nom = 'Next.js')),
(2, (SELECT id FROM competences WHERE nom = 'TypeScript')),
(2, (SELECT id FROM competences WHERE nom = 'Tailwind CSS')),
(2, (SELECT id FROM competences WHERE nom = 'Framer Motion'));

-- Exemple de requête pour récupérer un projet avec ses compétences
-- SELECT p.*, GROUP_CONCAT(c.nom) as competences 
-- FROM projects p 
-- LEFT JOIN project_competences pc ON p.id = pc.project_id 
-- LEFT JOIN competences c ON pc.competence_id = c.id 
-- WHERE p.id = 1 
-- GROUP BY p.id;