namespace JobTrackerApi.Services;
///
/// Records the current table-creation owner while the legacy startup reconciler is retired in
/// migration-backed increments. This is a governance boundary, not a second schema definition.
/// A table must appear in exactly one creation set.
///
internal static class StartupSchemaOwnership
{
internal static readonly IReadOnlySet MigrationOwnedTables = new HashSet(StringComparer.Ordinal)
{
"AccountDeletionFiles",
"AccountDeletionRequests",
"AiUsageRecords",
"AiWorkspaceNotes",
"Attachments",
"Companies",
"Correspondences",
"CvExtractionRuns",
"CvUploadArtifacts",
"EmailDrafts",
"EmailSendAttempts",
"GmailConnections",
"GmailReviewDecisions",
"ImapConnections",
"InterviewPrepNotes",
"JobApplications",
"JobEvents",
"Jobs",
"MicrosoftGraphConnections",
"RuleSettings",
"SystemEmailSettings",
"TailoredCvDrafts",
"TrustedDevices",
"TwoFactorRecoveryCodes",
"UserNotifications",
"UserOperations",
"UserRuleSettings",
"UserSessions",
};
internal static readonly IReadOnlySet ReconcilerOwnedTables = new HashSet(StringComparer.Ordinal)
{
"AiInteractions",
"ApplicationChecklistItems",
"AspNetRoleClaims",
"AspNetRoles",
"AspNetUserClaims",
"AspNetUserLogins",
"AspNetUserRoles",
"AspNetUsers",
"AspNetUserTokens",
"CareerCertifications",
"CareerEducations",
"CareerExperiences",
"CareerLanguages",
"CareerProfiles",
"CareerProfileVersions",
"CareerProjects",
"CareerSkills",
"CoverLetterVersions",
"CvVariants",
"CvVariantVersions",
"InterviewPrepItems",
};
// Historical migrations contain guarded compatibility bootstraps for these tables so direct
// EF tooling can traverse the chain. Their current creation owner remains the reconciler.
internal static readonly IReadOnlySet MigrationCompatibilityBootstrapTables =
new HashSet(StringComparer.Ordinal) { "AiInteractions", "AspNetUsers" };
}