feat(inventory): add ViewerAcquireHistoryEntry entity + DbSet

Adds the ViewerAcquireHistoryEntry model (8 fields: Id, ViewerId,
RewardType, RewardDetailId, RewardCount, AcquireType, Message,
AcquireTime), registers DbSet<ViewerAcquireHistoryEntry> on
SVSimDbContext, configures model (PK, FK cascade to Viewer, MaxLength
64 on Message, composite index on ViewerId/AcquireTime/Id), and adds a
DbSet round-trip integration test.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-06-09 14:19:00 -04:00
parent 82dc877639
commit 0d036e1bff
3 changed files with 73 additions and 0 deletions

View File

@@ -103,6 +103,7 @@ public class SVSimDbContext : DbContext
public DbSet<ViewerPresent> ViewerPresents => Set<ViewerPresent>();
public DbSet<TutorialPresentEntry> TutorialPresentEntries => Set<TutorialPresentEntry>();
public DbSet<ViewerAcquireHistoryEntry> ViewerAcquireHistory => Set<ViewerAcquireHistoryEntry>();
public DbSet<ArenaTwoPickReward> ArenaTwoPickRewards { get; set; } = null!;
public DbSet<ViewerArenaTwoPickRun> ViewerArenaTwoPickRuns { get; set; } = null!;
@@ -398,6 +399,19 @@ public class SVSimDbContext : DbContext
b.Property(p => p.PresentId).HasMaxLength(64);
});
modelBuilder.Entity<ViewerAcquireHistoryEntry>(b =>
{
b.HasKey(e => e.Id);
b.Property(e => e.Id).ValueGeneratedOnAdd();
b.Property(e => e.Message).HasMaxLength(64).IsRequired();
b.HasOne<Viewer>()
.WithMany()
.HasForeignKey(e => e.ViewerId)
.OnDelete(DeleteBehavior.Cascade);
b.HasIndex(e => new { e.ViewerId, e.AcquireTime, e.Id })
.HasDatabaseName("IX_ViewerAcquireHistory_ViewerId_AcquireTime_Id");
});
base.OnModelCreating(modelBuilder);
}