19-2 Migration table questions
Si vous avez fait le boss Mean Migrator
, vous avez déjà une migration pour la table commentaires
.
Nous changerons le nom de la table pour questions
! Changement de plan en cours de route, ça arrive! ;)
De plus, la migration est incomplète puisqu'il lui manque deux colonnes: utilisateur_id
et updated_at
.
Si vous n'avez pas fait le boss, vous n'avez pas de migration et il faudra la créer. Voir l'option 2 plus bas dans ce cas.
Option 1: Renommer la table et ajouter les colonnes utilisateur_id
et updated_at
- Créez une migration pour renommer la table et les FK
Snowfall.Data/Migrations/202503031145_RenommerTableCommentaires.cs
using FluentMigrator;
using FluentMigrator.Expressions;
namespace Snowfall.Data.Migrations;
[Migration(202503031145)]
public class RenommerTableCommentaires : Migration
{
public override void Up()
{
Delete.ForeignKey()
.FromTable("commentaires").ForeignColumn("evenement_id")
.ToTable("evenements").PrimaryColumn("id");
Rename.Table("commentaires").To("questions");
Create.ForeignKey()
.FromTable("questions").ForeignColumn("evenement_id")
.ToTable("evenements").PrimaryColumn("id");
}
public override void Down()
{
Delete.ForeignKey()
.FromTable("questions").ForeignColumn("evenement_id")
.ToTable("evenements").PrimaryColumn("id");
Rename.Table("questions").To("commentaires");
Create.ForeignKey()
.FromTable("commentaires").ForeignColumn("evenement_id")
.ToTable("evenements").PrimaryColumn("id");
}
} - Ajoutez une migration qui ajoute les colonnes
updated_at
etutilisateur_id
Snowfall.Data/Migrations/202503031157_AjouterColonneUtilisateurIdUpdatedAtAQuestions.cs[Migration(202503031157)]
public class AjouterColonneUtilisateurIdUpdatedAtAQuestions : Migration
{
public override void Up()
{
Create.Column("utilisateur_id")
.OnTable("questions")
.AsString(255);
Create.Column("updated_at")
.OnTable("questions")
.AsDateTime();
Create.ForeignKey()
.FromTable("questions").ForeignColumn("utilisateur_id")
.ToTable("application_users").PrimaryColumn("id");
Create.Index("index_questions_utilisateur_id")
.OnTable("questions")
.OnColumn("utilisateur_id");
Create.Index("index_questions_evenement_id")
.OnTable("questions")
.OnColumn("utilisateur_id");
}
public override void Down()
{
Delete.ForeignKey()
.FromTable("questions").ForeignColumn("utilisateur_id")
.ToTable("application_users").PrimaryColumn("id");
Delete.Column("utilisateur_id")
.FromTable("questions");
Delete.Column("updated_at")
.FromTable("questions");
}
}
Option 2: Ajout de la table complète
Voici une migration complète pour créer la table questions
, ainsi que foreign key et index.
Snowfall.Data/Migrations/202303071229_CreerCommentaires.cs
[Migration(202303071229)]
public class CreerCommentaires : Migration
{
public override void Up()
{
Create.Table("questions")
.WithColumn("id").AsInt64().PrimaryKey().Identity()
.WithColumn("evenement_id").AsInt64()
.WithColumn("utilisateur_id").AsString(255)
.WithColumn("contenu").AsString()
.WithColumn("created_at").AsDateTime()
.WithColumn("updated_at").AsDateTime();
Create.ForeignKey()
.FromTable("questions").ForeignColumn("evenement_id")
.ToTable("evenements").PrimaryColumn("id");
Create.ForeignKey()
.FromTable("questions").ForeignColumn("utilisateur_id")
.ToTable("application_users").PrimaryColumn("id");
Create.Index("index_questions_utilisateur_id")
.OnTable("questions")
.OnColumn("utilisateur_id");
Create.Index("index_questions_evenement_id")
.OnTable("questions")
.OnColumn("evenement_id");
}
public override void Down()
{
Delete.ForeignKey()
.FromTable("questions").ForeignColumn("evenement_id")
.ToTable("evenements").PrimaryColumn("id");
Delete.Table("questions");
}
}