refactor(db): migrate Gmail review decisions

Move creation ownership from startup reconciliation to an additive provider-aware migration. Preserve legacy decisions during downgrade and add the previously missing MariaDB table path.
This commit is contained in:
cesnimda
2026-08-30 16:48:32 +02:00
parent c094800c69
commit b425f1edc5
9 changed files with 106 additions and 18 deletions
@@ -0,0 +1,54 @@
using System;
using JobTrackerApi.Data;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace JobTrackerApi.Migrations;
/// <summary>
/// Moves Gmail review-decision creation into the migration chain and supplies the previously
/// missing MariaDB table while retaining SQLite rows created by startup reconciliation.
/// </summary>
[DbContext(typeof(JobTrackerContext))]
[Migration("20260830122000_AdoptGmailReviewDecisionsSchema")]
public sealed class AdoptGmailReviewDecisionsSchema : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
if (ActiveProvider.Contains("MySql", StringComparison.OrdinalIgnoreCase))
{
migrationBuilder.Sql("""
CREATE TABLE IF NOT EXISTS `GmailReviewDecisions` (
`Id` int NOT NULL AUTO_INCREMENT,
`OwnerUserId` varchar(255) NOT NULL,
`ThreadId` varchar(512) NOT NULL,
`JobApplicationId` int NULL,
`Decision` varchar(32) NOT NULL,
`Note` longtext NULL,
`UpdatedAt` datetime(6) NOT NULL,
PRIMARY KEY (`Id`)
) CHARACTER SET=utf8mb4;
""");
return;
}
migrationBuilder.Sql("""
CREATE TABLE IF NOT EXISTS "GmailReviewDecisions" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_GmailReviewDecisions" PRIMARY KEY AUTOINCREMENT,
"OwnerUserId" TEXT NOT NULL,
"ThreadId" TEXT NOT NULL,
"JobApplicationId" INTEGER NULL,
"Decision" TEXT NOT NULL,
"Note" TEXT NULL,
"UpdatedAt" TEXT NOT NULL
);
""");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
// Preserve decisions that may have been created before migration ownership was introduced.
}
}