using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
namespace ManagerService.Migrations
{
///
public partial class AlignSubscriptionPlansWithPricing : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
// Ordre imposé : les nouveaux plans d'abord, le repointage ensuite, les
// suppressions en dernier. EF avait scaffoldé les DeleteData en tête, ce qui
// aurait buté sur la clé étrangère Instances.SubscriptionPlanId — ou laissé
// des instances sans plan, donc à quotas nuls, donc sans IA ni stockage.
migrationBuilder.InsertData(
table: "SubscriptionPlans",
columns: new[] { "Id", "AiTokensPerMonth", "HasAdvancedStats", "HasStats", "Name", "StatsHistoryDays", "StorageQuotaBytes" },
values: new object[,]
{
{ "plan-enterprise", 9223372036854775807L, true, true, "Enterprise", 395, 0L },
{ "plan-pro", 0L, false, true, "Pro", 30, 16106127360L }
});
migrationBuilder.UpdateData(
table: "SubscriptionPlans",
keyColumn: "Id",
keyValue: "plan-essentiel",
columns: new[] { "AiTokensPerMonth", "StatsHistoryDays" },
values: new object[] { 0L, 30 });
// « Standard » devient « Pro » : même offre, nom aligné sur la grille.
migrationBuilder.Sql(
@"UPDATE ""Instances"" SET ""SubscriptionPlanId"" = 'plan-pro' WHERE ""SubscriptionPlanId"" = 'plan-standard';");
// « Starter » n'a aucun équivalent commercial et donnait 0 jeton : les
// instances qui y pointaient sont détachées plutôt que rangées dans une
// offre qu'elles n'ont pas achetée. Un plan nul est visible à l'écran,
// un mauvais plan ne l'est pas.
migrationBuilder.Sql(
@"UPDATE ""Instances"" SET ""SubscriptionPlanId"" = NULL WHERE ""SubscriptionPlanId"" = 'plan-starter';");
migrationBuilder.DeleteData(
table: "SubscriptionPlans",
keyColumn: "Id",
keyValue: "plan-standard");
migrationBuilder.DeleteData(
table: "SubscriptionPlans",
keyColumn: "Id",
keyValue: "plan-starter");
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DeleteData(
table: "SubscriptionPlans",
keyColumn: "Id",
keyValue: "plan-enterprise");
migrationBuilder.DeleteData(
table: "SubscriptionPlans",
keyColumn: "Id",
keyValue: "plan-pro");
migrationBuilder.UpdateData(
table: "SubscriptionPlans",
keyColumn: "Id",
keyValue: "plan-essentiel",
columns: new[] { "AiTokensPerMonth", "StatsHistoryDays" },
values: new object[] { 500000L, 395 });
migrationBuilder.InsertData(
table: "SubscriptionPlans",
columns: new[] { "Id", "AiTokensPerMonth", "HasAdvancedStats", "HasStats", "Name", "StatsHistoryDays", "StorageQuotaBytes" },
values: new object[,]
{
{ "plan-standard", 5000000L, false, true, "Standard", 395, 10737418240L },
{ "plan-starter", 0L, false, false, "Starter", 30, 1073741824L }
});
// Repointage inverse. Les instances détachées de plan-starter ne sont pas
// rattachées : rien ne dit lesquelles l'étaient.
migrationBuilder.Sql(
@"UPDATE ""Instances"" SET ""SubscriptionPlanId"" = 'plan-standard' WHERE ""SubscriptionPlanId"" = 'plan-pro';");
}
}
}