Aller au contenu principal

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

  1. 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");
    }
    }
  2. Ajoutez une migration qui ajoute les colonnes updated_at et utilisateur_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");
}
}