refactor(db): migrate CV extraction data
Move upload artifacts and extraction runs into an additive provider-aware migration. Preserve parsed results, indexes, and nullable artifact retention semantics.
This commit is contained in:
@@ -548,45 +548,6 @@ public static class StartupInitializationExtensions
|
||||
|
||||
static void EnsureCvTables(DbConnection c)
|
||||
{
|
||||
Exec(c, """
|
||||
CREATE TABLE IF NOT EXISTS "CvUploadArtifacts" (
|
||||
"Id" INTEGER NOT NULL CONSTRAINT "PK_CvUploadArtifacts" PRIMARY KEY AUTOINCREMENT,
|
||||
"OwnerUserId" TEXT NOT NULL,
|
||||
"OriginalFileName" TEXT NOT NULL,
|
||||
"StoredFileName" TEXT NOT NULL,
|
||||
"MimeType" TEXT NOT NULL,
|
||||
"ByteSize" INTEGER NOT NULL,
|
||||
"Sha256" TEXT NOT NULL,
|
||||
"StoragePath" TEXT NOT NULL,
|
||||
"UploadedAtUtc" TEXT NOT NULL
|
||||
);
|
||||
""");
|
||||
|
||||
Exec(c, """
|
||||
CREATE TABLE IF NOT EXISTS "CvExtractionRuns" (
|
||||
"Id" INTEGER NOT NULL CONSTRAINT "PK_CvExtractionRuns" PRIMARY KEY AUTOINCREMENT,
|
||||
"OwnerUserId" TEXT NOT NULL,
|
||||
"ArtifactId" INTEGER NULL,
|
||||
"Trigger" TEXT NOT NULL,
|
||||
"ParserVersion" TEXT NOT NULL,
|
||||
"NormalizerVersion" TEXT NOT NULL,
|
||||
"LlmPromptVersion" TEXT NOT NULL,
|
||||
"Status" TEXT NOT NULL,
|
||||
"RawExtractedText" TEXT NULL,
|
||||
"NormalizedText" TEXT NULL,
|
||||
"StructuredProfileJson" TEXT NULL,
|
||||
"ErrorMessage" TEXT NULL,
|
||||
"StartedAtUtc" TEXT NOT NULL,
|
||||
"CompletedAtUtc" TEXT NULL,
|
||||
"AppliedAtUtc" TEXT NULL,
|
||||
CONSTRAINT "FK_CvExtractionRuns_CvUploadArtifacts_ArtifactId" FOREIGN KEY ("ArtifactId") REFERENCES "CvUploadArtifacts" ("Id") ON DELETE SET NULL
|
||||
);
|
||||
""");
|
||||
|
||||
Exec(c, """CREATE INDEX IF NOT EXISTS "IX_CvUploadArtifacts_OwnerUserId_UploadedAtUtc" ON "CvUploadArtifacts" ("OwnerUserId", "UploadedAtUtc");""");
|
||||
Exec(c, """CREATE INDEX IF NOT EXISTS "IX_CvExtractionRuns_OwnerUserId_StartedAtUtc" ON "CvExtractionRuns" ("OwnerUserId", "StartedAtUtc");""");
|
||||
Exec(c, """CREATE INDEX IF NOT EXISTS "IX_CvExtractionRuns_ArtifactId" ON "CvExtractionRuns" ("ArtifactId");""");
|
||||
|
||||
Exec(c, """
|
||||
CREATE TABLE IF NOT EXISTS "TailoredCvDrafts" (
|
||||
"Id" INTEGER NOT NULL CONSTRAINT "PK_TailoredCvDrafts" PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -1293,49 +1254,6 @@ public static class StartupInitializationExtensions
|
||||
seedRuleSettings.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
if (!HasMySqlTable(conn, "CvUploadArtifacts"))
|
||||
{
|
||||
using var cmd = conn.CreateCommand();
|
||||
cmd.CommandText = @"CREATE TABLE IF NOT EXISTS `CvUploadArtifacts` (
|
||||
`Id` int NOT NULL AUTO_INCREMENT,
|
||||
`OwnerUserId` varchar(255) NOT NULL,
|
||||
`OriginalFileName` longtext NOT NULL,
|
||||
`StoredFileName` longtext NOT NULL,
|
||||
`MimeType` longtext NOT NULL,
|
||||
`ByteSize` bigint NOT NULL,
|
||||
`Sha256` longtext NOT NULL,
|
||||
`StoragePath` longtext NOT NULL,
|
||||
`UploadedAtUtc` datetime(6) NOT NULL,
|
||||
PRIMARY KEY (`Id`)
|
||||
);";
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
if (!HasMySqlTable(conn, "CvExtractionRuns") && HasMySqlTable(conn, "CvUploadArtifacts"))
|
||||
{
|
||||
using var cmd = conn.CreateCommand();
|
||||
cmd.CommandText = @"CREATE TABLE IF NOT EXISTS `CvExtractionRuns` (
|
||||
`Id` int NOT NULL AUTO_INCREMENT,
|
||||
`OwnerUserId` varchar(255) NOT NULL,
|
||||
`ArtifactId` int NULL,
|
||||
`Trigger` longtext NOT NULL,
|
||||
`ParserVersion` longtext NOT NULL,
|
||||
`NormalizerVersion` longtext NOT NULL,
|
||||
`LlmPromptVersion` longtext NOT NULL,
|
||||
`Status` longtext NOT NULL,
|
||||
`RawExtractedText` longtext NULL,
|
||||
`NormalizedText` longtext NULL,
|
||||
`StructuredProfileJson` longtext NULL,
|
||||
`ErrorMessage` longtext NULL,
|
||||
`StartedAtUtc` datetime(6) NOT NULL,
|
||||
`CompletedAtUtc` datetime(6) NULL,
|
||||
`AppliedAtUtc` datetime(6) NULL,
|
||||
PRIMARY KEY (`Id`),
|
||||
CONSTRAINT `FK_CvExtractionRuns_CvUploadArtifacts_ArtifactId` FOREIGN KEY (`ArtifactId`) REFERENCES `CvUploadArtifacts` (`Id`) ON DELETE SET NULL
|
||||
);";
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
EnsureMySqlColumn(conn, "GmailConnections", "LastSyncAttemptedAt", "ALTER TABLE `GmailConnections` ADD COLUMN `LastSyncAttemptedAt` datetime(6) NULL;");
|
||||
EnsureMySqlColumn(conn, "GmailConnections", "LastSyncSucceededAt", "ALTER TABLE `GmailConnections` ADD COLUMN `LastSyncSucceededAt` datetime(6) NULL;");
|
||||
EnsureMySqlColumn(conn, "GmailConnections", "LastSyncMode", "ALTER TABLE `GmailConnections` ADD COLUMN `LastSyncMode` varchar(255) NULL;");
|
||||
|
||||
@@ -15,6 +15,8 @@ internal static class StartupSchemaOwnership
|
||||
"Attachments",
|
||||
"Companies",
|
||||
"Correspondences",
|
||||
"CvExtractionRuns",
|
||||
"CvUploadArtifacts",
|
||||
"EmailDrafts",
|
||||
"EmailSendAttempts",
|
||||
"GmailConnections",
|
||||
@@ -55,8 +57,6 @@ internal static class StartupSchemaOwnership
|
||||
"CareerProjects",
|
||||
"CareerSkills",
|
||||
"CoverLetterVersions",
|
||||
"CvExtractionRuns",
|
||||
"CvUploadArtifacts",
|
||||
"CvVariants",
|
||||
"CvVariantVersions",
|
||||
"InterviewPrepItems",
|
||||
|
||||
Reference in New Issue
Block a user