id('ID_Role'); $table->string('Nom', 100)->unique(); }); // Créer la table Utilisateur Schema::create('utilisateurs', function (Blueprint $table) { $table->id('ID_Utilisateur'); $table->string('Email', 255)->unique(); $table->string('MotDePasse', 255); $table->string('Pseudo', 100)->unique()->nullable(); $table->timestamp('DateInscription')->useCurrent(); $table->enum('Statut', ['Actif', 'Inactif'])->default('Actif'); $table->foreignId('ID_Role')->constrained('roles', 'ID_Role'); }); // Créer la table Type_Ressource Schema::create('type_ressources', function (Blueprint $table) { $table->id('ID_Type_Ressource'); $table->string('Format', 100)->unique(); }); // Créer la table Categorie Schema::create('categories', function (Blueprint $table) { $table->id('ID_Categorie'); $table->string('Nom', 100); $table->text('Description')->nullable(); }); // Créer la table Ressource Schema::create('ressources', function (Blueprint $table) { $table->id('ID_Ressource'); $table->string('Titre', 255); $table->text('Contenu')->nullable(); $table->string('URL', 2048)->nullable(); $table->timestamp('DateCreation')->useCurrent(); $table->enum('Visibilite', ['Privée', 'Partagée', 'Publique'])->default('Privée'); $table->enum('Statut', ['En attente', 'Publiée', 'Suspendue', 'Rejetée'])->default('En attente'); $table->foreignId('ID_Type_Ressource')->constrained('type_ressources', 'ID_Type_Ressource'); $table->foreignId('ID_Moderateur_Validation')->nullable()->constrained('utilisateurs', 'ID_Utilisateur'); $table->foreignId('ID_Utilisateur_Createur')->constrained('utilisateurs', 'ID_Utilisateur'); }); // Créer la table Commentaire Schema::create('commentaires', function (Blueprint $table) { $table->id('ID_Commentaire'); $table->text('Texte'); $table->timestamp('DatePublication')->useCurrent(); $table->enum('Statut', ['En attente', 'Approuvé', 'Rejeté'])->default('En attente'); $table->foreignId('ID_Parent_Commentaire')->nullable()->constrained('commentaires', 'ID_Commentaire'); $table->foreignId('ID_Utilisateur')->constrained('utilisateurs', 'ID_Utilisateur'); $table->foreignId('ID_Ressource')->constrained('ressources', 'ID_Ressource'); }); // Créer la table Activite Schema::create('activites', function (Blueprint $table) { $table->id('ID_Instance'); $table->timestamp('DateDebut')->useCurrent(); $table->timestamp('DateFin')->useCurrent(); $table->foreignId('ID_Utilisateur_Hote')->constrained('utilisateurs', 'ID_Utilisateur'); $table->foreignId('ID_Ressource')->constrained('ressources', 'ID_Ressource'); }); // Créer la table Activite_Message Schema::create('activite_messages', function (Blueprint $table) { $table->id('ID_Message'); $table->text('Message'); $table->timestamp('Timestamp')->useCurrent(); $table->foreignId('ID_Utilisateur_Emetteur')->constrained('utilisateurs', 'ID_Utilisateur'); $table->foreignId('ID_Instance')->constrained('activites', 'ID_Instance'); }); // Créer la table Ressource_Categorie Schema::create('ressource_categories', function (Blueprint $table) { $table->foreignId('ID_Ressource')->constrained('ressources', 'ID_Ressource'); $table->foreignId('ID_Categorie')->constrained('categories', 'ID_Categorie'); $table->primary(['ID_Ressource', 'ID_Categorie']); }); // Créer la table Utilisateur_Progression Schema::create('utilisateur_progressions', function (Blueprint $table) { $table->foreignId('ID_Utilisateur')->constrained('utilisateurs', 'ID_Utilisateur'); $table->foreignId('ID_Ressource')->constrained('ressources', 'ID_Ressource'); $table->enum('Statut_Exploitation', ['Non commencé', 'Exploitée', 'Mis de côté'])->default('Non commencé'); $table->boolean('Est_Favori')->default(false); $table->primary(['ID_Utilisateur', 'ID_Ressource']); }); // Créer la table Activite_Participant Schema::create('activite_participants', function (Blueprint $table) { $table->foreignId('ID_Instance')->constrained('activites', 'ID_Instance'); $table->foreignId('ID_Utilisateur_Participant')->constrained('utilisateurs', 'ID_Utilisateur'); $table->primary(['ID_Instance', 'ID_Utilisateur_Participant']); }); } public function down(): void { Schema::dropIfExists('activite_participants'); Schema::dropIfExists('utilisateur_progressions'); Schema::dropIfExists('ressource_categories'); Schema::dropIfExists('activite_messages'); Schema::dropIfExists('activites'); Schema::dropIfExists('commentaires'); Schema::dropIfExists('ressources'); Schema::dropIfExists('categories'); Schema::dropIfExists('type_ressources'); Schema::dropIfExists('utilisateurs'); Schema::dropIfExists('roles'); } };