[FA-24] Reading lists
This commit is contained in:
@@ -11,6 +11,8 @@ public class UserNovelDataServiceDbContext : FictionArchiveDbContext
|
||||
public DbSet<Novel> Novels { get; set; }
|
||||
public DbSet<Volume> Volumes { get; set; }
|
||||
public DbSet<Chapter> Chapters { get; set; }
|
||||
public DbSet<ReadingList> ReadingLists { get; set; }
|
||||
public DbSet<ReadingListItem> ReadingListItems { get; set; }
|
||||
|
||||
public UserNovelDataServiceDbContext(DbContextOptions options, ILogger<UserNovelDataServiceDbContext> logger) : base(options, logger)
|
||||
{
|
||||
@@ -34,5 +36,32 @@ public class UserNovelDataServiceDbContext : FictionArchiveDbContext
|
||||
.HasForeignKey(b => b.UserId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<ReadingList>(entity =>
|
||||
{
|
||||
// Index for fetching user's lists
|
||||
entity.HasIndex(r => r.UserId);
|
||||
|
||||
// User relationship with cascade delete
|
||||
entity.HasOne(r => r.User)
|
||||
.WithMany()
|
||||
.HasForeignKey(r => r.UserId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<ReadingListItem>(entity =>
|
||||
{
|
||||
// Unique constraint: one entry per novel per list
|
||||
entity.HasIndex(i => new { i.ReadingListId, i.NovelId }).IsUnique();
|
||||
|
||||
// Index for efficient ordered retrieval
|
||||
entity.HasIndex(i => new { i.ReadingListId, i.Order });
|
||||
|
||||
// ReadingList relationship with cascade delete
|
||||
entity.HasOne(i => i.ReadingList)
|
||||
.WithMany(r => r.Items)
|
||||
.HasForeignKey(i => i.ReadingListId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user