From b6a36cd86092e49b9706fe85c152ddf5108f002c Mon Sep 17 00:00:00 2001 From: cesnimda Date: Thu, 9 Apr 2026 21:00:04 +0200 Subject: [PATCH] Repair MySQL auto increment drift for core tables --- JobTrackerApi/Program.cs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/JobTrackerApi/Program.cs b/JobTrackerApi/Program.cs index edc9752..2c99d61 100644 --- a/JobTrackerApi/Program.cs +++ b/JobTrackerApi/Program.cs @@ -861,6 +861,42 @@ CREATE TABLE IF NOT EXISTS "TailoredCvDrafts" ( ddlCmd.ExecuteNonQuery(); } + static bool MySqlIntPrimaryKeyIsAutoIncrement(MySqlConnection c, string table, string column) + { + using var cmd = c.CreateCommand(); + cmd.CommandText = @"SELECT EXTRA +FROM INFORMATION_SCHEMA.COLUMNS +WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @table AND COLUMN_NAME = @column +LIMIT 1;"; + cmd.Parameters.AddWithValue("@schema", c.Database); + cmd.Parameters.AddWithValue("@table", table); + cmd.Parameters.AddWithValue("@column", column); + var extra = cmd.ExecuteScalar()?.ToString() ?? string.Empty; + return extra.Contains("auto_increment", StringComparison.OrdinalIgnoreCase); + } + + static void EnsureMySqlAutoIncrementPrimaryKey(MySqlConnection c, string table, string column) + { + if (!HasMySqlTable(c, table) || !MySqlColumnExists(c, table, column) || MySqlIntPrimaryKeyIsAutoIncrement(c, table, column)) + { + return; + } + + using var cmd = c.CreateCommand(); + cmd.CommandText = $"ALTER TABLE `{table}` MODIFY COLUMN `{column}` int NOT NULL AUTO_INCREMENT;"; + cmd.ExecuteNonQuery(); + } + + EnsureMySqlAutoIncrementPrimaryKey(conn, "Companies", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "JobApplications", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "Correspondences", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "Attachments", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "JobEvents", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "GmailConnections", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "CvUploadArtifacts", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "CvExtractionRuns", "Id"); + EnsureMySqlAutoIncrementPrimaryKey(conn, "TailoredCvDrafts", "Id"); + EnsureMySqlColumn(conn, "Companies", "OwnerUserId", "ALTER TABLE `Companies` ADD COLUMN `OwnerUserId` varchar(255) NULL;"); EnsureMySqlColumn(conn, "Companies", "Source", "ALTER TABLE `Companies` ADD COLUMN `Source` longtext NULL;"); EnsureMySqlColumn(conn, "Companies", "RecruiterName", "ALTER TABLE `Companies` ADD COLUMN `RecruiterName` longtext NULL;");