Implement phase 6 critical effect normalization

This commit is contained in:
2026-03-14 11:31:13 +01:00
parent 35c250666f
commit 521f0ff8d5
29 changed files with 932 additions and 55 deletions

View File

@@ -39,5 +39,52 @@ public static class RolemasterDbSchemaUpgrader
ON "CriticalBranches" ("CriticalResultId", "SortOrder");
""",
cancellationToken);
await dbContext.Database.ExecuteSqlRawAsync(
"""
CREATE TABLE IF NOT EXISTS "CriticalEffects" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_CriticalEffects" PRIMARY KEY AUTOINCREMENT,
"CriticalResultId" INTEGER NULL,
"CriticalBranchId" INTEGER NULL,
"EffectCode" TEXT NOT NULL,
"Target" TEXT NULL,
"ValueInteger" INTEGER NULL,
"ValueDecimal" TEXT NULL,
"ValueExpression" TEXT NULL,
"DurationRounds" INTEGER NULL,
"PerRound" INTEGER NULL,
"Modifier" INTEGER NULL,
"BodyPart" TEXT NULL,
"IsPermanent" INTEGER NOT NULL,
"SourceType" TEXT NOT NULL,
"SourceText" TEXT NULL,
CONSTRAINT "FK_CriticalEffects_CriticalResults_CriticalResultId"
FOREIGN KEY ("CriticalResultId") REFERENCES "CriticalResults" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_CriticalEffects_CriticalBranches_CriticalBranchId"
FOREIGN KEY ("CriticalBranchId") REFERENCES "CriticalBranches" ("Id") ON DELETE CASCADE
);
""",
cancellationToken);
await dbContext.Database.ExecuteSqlRawAsync(
"""
CREATE INDEX IF NOT EXISTS "IX_CriticalEffects_EffectCode"
ON "CriticalEffects" ("EffectCode");
""",
cancellationToken);
await dbContext.Database.ExecuteSqlRawAsync(
"""
CREATE INDEX IF NOT EXISTS "IX_CriticalEffects_CriticalResultId"
ON "CriticalEffects" ("CriticalResultId");
""",
cancellationToken);
await dbContext.Database.ExecuteSqlRawAsync(
"""
CREATE INDEX IF NOT EXISTS "IX_CriticalEffects_CriticalBranchId"
ON "CriticalEffects" ("CriticalBranchId");
""",
cancellationToken);
}
}