feat(applications): preserve submitted packages
This commit is contained in:
@@ -59,6 +59,8 @@ namespace JobTrackerApi.Data
|
||||
public DbSet<AiUsageRecord> AiUsageRecords => Set<AiUsageRecord>();
|
||||
public DbSet<ApplicationChecklistItem> ApplicationChecklistItems => Set<ApplicationChecklistItem>();
|
||||
public DbSet<CoverLetterVersion> CoverLetterVersions => Set<CoverLetterVersion>();
|
||||
public DbSet<SubmittedApplicationPackage> SubmittedApplicationPackages => Set<SubmittedApplicationPackage>();
|
||||
public DbSet<SubmittedPackageAttachment> SubmittedPackageAttachments => Set<SubmittedPackageAttachment>();
|
||||
public DbSet<InterviewPrepItem> InterviewPrepItems => Set<InterviewPrepItem>();
|
||||
public DbSet<UserOperation> UserOperations => Set<UserOperation>();
|
||||
public DbSet<UserNotification> UserNotifications => Set<UserNotification>();
|
||||
@@ -550,6 +552,33 @@ namespace JobTrackerApi.Data
|
||||
.HasForeignKey(x => x.JobApplicationId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
modelBuilder.Entity<SubmittedApplicationPackage>()
|
||||
.HasQueryFilter(x => CurrentUserId != null && x.OwnerUserId == CurrentUserId);
|
||||
modelBuilder.Entity<SubmittedApplicationPackage>().Property(x => x.OwnerUserId).HasMaxLength(255);
|
||||
modelBuilder.Entity<SubmittedApplicationPackage>().Property(x => x.CvVariantName).HasMaxLength(255);
|
||||
modelBuilder.Entity<SubmittedApplicationPackage>().Property(x => x.CvThemeId).HasMaxLength(64);
|
||||
modelBuilder.Entity<SubmittedApplicationPackage>()
|
||||
.HasIndex(x => new { x.OwnerUserId, x.JobApplicationId, x.Version })
|
||||
.IsUnique();
|
||||
modelBuilder.Entity<SubmittedApplicationPackage>()
|
||||
.HasOne(x => x.JobApplication)
|
||||
.WithMany()
|
||||
.HasForeignKey(x => x.JobApplicationId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
modelBuilder.Entity<SubmittedPackageAttachment>()
|
||||
.HasQueryFilter(x => CurrentUserId != null && x.Package != null && x.Package.OwnerUserId == CurrentUserId);
|
||||
modelBuilder.Entity<SubmittedPackageAttachment>().Property(x => x.FileName).HasMaxLength(500);
|
||||
modelBuilder.Entity<SubmittedPackageAttachment>().Property(x => x.FileType).HasMaxLength(255);
|
||||
modelBuilder.Entity<SubmittedPackageAttachment>().Property(x => x.Purpose).HasMaxLength(64);
|
||||
modelBuilder.Entity<SubmittedPackageAttachment>().Property(x => x.Sha256).HasMaxLength(64);
|
||||
modelBuilder.Entity<SubmittedPackageAttachment>()
|
||||
.HasOne(x => x.Package)
|
||||
.WithMany(x => x.Attachments)
|
||||
.HasForeignKey(x => x.SubmittedApplicationPackageId)
|
||||
.HasConstraintName("FK_SubmittedPackageAttachments_Packages_PackageId")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
// Phase 5.5: user-owned interview preparation. Unlike InterviewPrepNote (an AI cache), nothing
|
||||
// regenerates this. docs/architecture/application-workspace.md.
|
||||
modelBuilder.Entity<InterviewPrepItem>()
|
||||
|
||||
Reference in New Issue
Block a user