Refactor reactions to track per-user instead of aggregate count
Replace Reaction.Count with UserId foreign key to User entity, add unique index on (MessageId, EmojiName, UserId) to prevent duplicates, and configure the User-Reactions relationship. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -111,7 +111,13 @@ public class DiscordArchiveContext : DbContext
|
||||
.WithMany(m => m.Reactions)
|
||||
.HasForeignKey(e => e.MessageId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
entity.HasOne(e => e.User)
|
||||
.WithMany(u => u.Reactions)
|
||||
.HasForeignKey(e => e.UserId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
entity.HasIndex(e => e.MessageId);
|
||||
entity.HasIndex(e => e.UserId);
|
||||
entity.HasIndex(e => new { e.MessageId, e.EmojiName, e.UserId }).IsUnique();
|
||||
});
|
||||
|
||||
// Mention configuration
|
||||
|
||||
@@ -19,9 +19,14 @@ public class Reaction
|
||||
[MaxLength(256)]
|
||||
public string EmojiName { get; set; } = null!;
|
||||
|
||||
public int Count { get; set; }
|
||||
[Required]
|
||||
[MaxLength(32)]
|
||||
public string UserId { get; set; } = null!;
|
||||
|
||||
// Navigation properties
|
||||
[ForeignKey(nameof(MessageId))]
|
||||
public Message Message { get; set; } = null!;
|
||||
|
||||
[ForeignKey(nameof(UserId))]
|
||||
public User User { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -22,4 +22,5 @@ public class User
|
||||
public ICollection<UserSnapshot> Snapshots { get; set; } = new List<UserSnapshot>();
|
||||
public ICollection<Message> Messages { get; set; } = new List<Message>();
|
||||
public ICollection<Mention> Mentions { get; set; } = new List<Mention>();
|
||||
public ICollection<Reaction> Reactions { get; set; } = new List<Reaction>();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user