feat(processing): persist safe atomic operation history

This commit is contained in:
cesnimda
2026-10-28 15:54:37 +01:00
parent 5f261083f3
commit 1f87301ee9
17 changed files with 501 additions and 32 deletions
+11
View File
@@ -66,6 +66,7 @@ namespace JobTrackerApi.Data
public DbSet<SubmittedPackageAttachment> SubmittedPackageAttachments => Set<SubmittedPackageAttachment>();
public DbSet<InterviewPrepItem> InterviewPrepItems => Set<InterviewPrepItem>();
public DbSet<UserOperation> UserOperations => Set<UserOperation>();
public DbSet<UserOperationEvent> UserOperationEvents => Set<UserOperationEvent>();
public DbSet<UserNotification> UserNotifications => Set<UserNotification>();
public DbSet<EmailSendAttempt> EmailSendAttempts => Set<EmailSendAttempt>();
public DbSet<EmailDraft> EmailDrafts => Set<EmailDraft>();
@@ -321,6 +322,16 @@ namespace JobTrackerApi.Data
modelBuilder.Entity<UserOperation>()
.HasIndex(x => new { x.Status, x.AvailableAtUtc, x.Priority });
modelBuilder.Entity<UserOperationEvent>().HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
modelBuilder.Entity<UserOperationEvent>().Property(x => x.OwnerUserId).HasMaxLength(255);
modelBuilder.Entity<UserOperationEvent>().Property(x => x.Kind).HasMaxLength(40);
modelBuilder.Entity<UserOperationEvent>().Property(x => x.Status).HasMaxLength(32);
modelBuilder.Entity<UserOperationEvent>().Property(x => x.Stage).HasMaxLength(64);
modelBuilder.Entity<UserOperationEvent>().Property(x => x.FailureCode).HasMaxLength(64);
modelBuilder.Entity<UserOperationEvent>().HasIndex(x => new { x.OperationId, x.Id });
modelBuilder.Entity<UserOperationEvent>().HasIndex(x => x.AtUtc);
modelBuilder.Entity<UserOperationEvent>().HasOne<UserOperation>().WithMany().HasForeignKey(x => x.OperationId).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<UserNotification>()
.HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
modelBuilder.Entity<UserNotification>().Property(x => x.OwnerUserId).HasMaxLength(255);