feat(applications): preserve submitted packages
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using JobTrackerApi.Data;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace JobTrackerApi.Migrations;
|
||||
|
||||
[DbContext(typeof(JobTrackerContext))]
|
||||
[Migration("20260830135000_AdoptSubmittedApplicationPackageSchema")]
|
||||
public sealed class AdoptSubmittedApplicationPackageSchema : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder) =>
|
||||
migrationBuilder.Sql(ActiveProvider.Contains("MySql", StringComparison.OrdinalIgnoreCase) ? MySqlDdl : SqliteDdl);
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.Sql(ActiveProvider.Contains("MySql", StringComparison.OrdinalIgnoreCase)
|
||||
? "DROP TABLE IF EXISTS `SubmittedPackageAttachments`; DROP TABLE IF EXISTS `SubmittedApplicationPackages`;"
|
||||
: "DROP TABLE IF EXISTS \"SubmittedPackageAttachments\"; DROP TABLE IF EXISTS \"SubmittedApplicationPackages\";");
|
||||
}
|
||||
|
||||
private const string SqliteDdl = """
|
||||
CREATE TABLE IF NOT EXISTS "SubmittedApplicationPackages" (
|
||||
"Id" INTEGER NOT NULL CONSTRAINT "PK_SubmittedApplicationPackages" PRIMARY KEY AUTOINCREMENT,
|
||||
"OwnerUserId" TEXT NOT NULL, "JobApplicationId" INTEGER NOT NULL, "Version" INTEGER NOT NULL,
|
||||
"CvVariantId" INTEGER NULL, "CvVariantName" TEXT NULL, "CvVariantVersion" INTEGER NULL,
|
||||
"CvThemeId" TEXT NULL, "CvSettingsJson" TEXT NULL, "CareerProfileJson" TEXT NULL,
|
||||
"RenderedCvHtml" TEXT NULL, "CoverLetterText" TEXT NULL,
|
||||
"ApplicationMaterialJson" TEXT NOT NULL, "CreatedAtUtc" TEXT NOT NULL,
|
||||
CONSTRAINT "FK_SubmittedApplicationPackages_JobApplications_JobApplicationId"
|
||||
FOREIGN KEY ("JobApplicationId") REFERENCES "JobApplications" ("Id") ON DELETE CASCADE);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "IX_SubmittedApplicationPackages_Owner_Job_Version"
|
||||
ON "SubmittedApplicationPackages" ("OwnerUserId", "JobApplicationId", "Version");
|
||||
CREATE INDEX IF NOT EXISTS "IX_SubmittedApplicationPackages_JobApplicationId"
|
||||
ON "SubmittedApplicationPackages" ("JobApplicationId");
|
||||
CREATE TABLE IF NOT EXISTS "SubmittedPackageAttachments" (
|
||||
"Id" INTEGER NOT NULL CONSTRAINT "PK_SubmittedPackageAttachments" PRIMARY KEY AUTOINCREMENT,
|
||||
"SubmittedApplicationPackageId" INTEGER NOT NULL, "FileName" TEXT NOT NULL,
|
||||
"FileType" TEXT NOT NULL, "Purpose" TEXT NULL, "FileSize" INTEGER NOT NULL,
|
||||
"Sha256" TEXT NOT NULL, "FilePath" TEXT NOT NULL,
|
||||
CONSTRAINT "FK_SubmittedPackageAttachments_Packages_PackageId"
|
||||
FOREIGN KEY ("SubmittedApplicationPackageId") REFERENCES "SubmittedApplicationPackages" ("Id") ON DELETE CASCADE);
|
||||
CREATE INDEX IF NOT EXISTS "IX_SubmittedPackageAttachments_SubmittedApplicationPackageId"
|
||||
ON "SubmittedPackageAttachments" ("SubmittedApplicationPackageId");
|
||||
""";
|
||||
|
||||
private const string MySqlDdl = """
|
||||
CREATE TABLE IF NOT EXISTS `SubmittedApplicationPackages` (
|
||||
`Id` int NOT NULL AUTO_INCREMENT, `OwnerUserId` varchar(255) NOT NULL,
|
||||
`JobApplicationId` int NOT NULL, `Version` int NOT NULL, `CvVariantId` int NULL,
|
||||
`CvVariantName` varchar(255) NULL, `CvVariantVersion` int NULL, `CvThemeId` varchar(64) NULL,
|
||||
`CvSettingsJson` longtext NULL, `CareerProfileJson` longtext NULL, `RenderedCvHtml` longtext NULL,
|
||||
`CoverLetterText` longtext NULL, `ApplicationMaterialJson` longtext NOT NULL,
|
||||
`CreatedAtUtc` datetime(6) NOT NULL, PRIMARY KEY (`Id`),
|
||||
CONSTRAINT `FK_SubmittedApplicationPackages_JobApplications_JobApplicationId`
|
||||
FOREIGN KEY (`JobApplicationId`) REFERENCES `JobApplications` (`Id`) ON DELETE CASCADE)
|
||||
CHARACTER SET=utf8mb4;
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS `IX_SubmittedApplicationPackages_Owner_Job_Version`
|
||||
ON `SubmittedApplicationPackages` (`OwnerUserId`, `JobApplicationId`, `Version`);
|
||||
CREATE INDEX IF NOT EXISTS `IX_SubmittedApplicationPackages_JobApplicationId`
|
||||
ON `SubmittedApplicationPackages` (`JobApplicationId`);
|
||||
CREATE TABLE IF NOT EXISTS `SubmittedPackageAttachments` (
|
||||
`Id` int NOT NULL AUTO_INCREMENT, `SubmittedApplicationPackageId` int NOT NULL,
|
||||
`FileName` varchar(500) NOT NULL, `FileType` varchar(255) NOT NULL, `Purpose` varchar(64) NULL,
|
||||
`FileSize` bigint NOT NULL, `Sha256` varchar(64) NOT NULL, `FilePath` longtext NOT NULL,
|
||||
PRIMARY KEY (`Id`),
|
||||
CONSTRAINT `FK_SubmittedPackageAttachments_Packages_PackageId`
|
||||
FOREIGN KEY (`SubmittedApplicationPackageId`) REFERENCES `SubmittedApplicationPackages` (`Id`) ON DELETE CASCADE)
|
||||
CHARACTER SET=utf8mb4;
|
||||
CREATE INDEX IF NOT EXISTS `IX_SubmittedPackageAttachments_SubmittedApplicationPackageId`
|
||||
ON `SubmittedPackageAttachments` (`SubmittedApplicationPackageId`);
|
||||
""";
|
||||
}
|
||||
Reference in New Issue
Block a user