diff --git a/src/DiscordArchiveManager/Data/DiscordArchiveContext.cs b/src/DiscordArchiveManager/Data/DiscordArchiveContext.cs index aec49aa..5f717b8 100644 --- a/src/DiscordArchiveManager/Data/DiscordArchiveContext.cs +++ b/src/DiscordArchiveManager/Data/DiscordArchiveContext.cs @@ -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 diff --git a/src/DiscordArchiveManager/Models/Entities/Reaction.cs b/src/DiscordArchiveManager/Models/Entities/Reaction.cs index 9eaa126..7fc6de7 100644 --- a/src/DiscordArchiveManager/Models/Entities/Reaction.cs +++ b/src/DiscordArchiveManager/Models/Entities/Reaction.cs @@ -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!; } diff --git a/src/DiscordArchiveManager/Models/Entities/User.cs b/src/DiscordArchiveManager/Models/Entities/User.cs index 1ca4a48..9303b71 100644 --- a/src/DiscordArchiveManager/Models/Entities/User.cs +++ b/src/DiscordArchiveManager/Models/Entities/User.cs @@ -22,4 +22,5 @@ public class User public ICollection Snapshots { get; set; } = new List(); public ICollection Messages { get; set; } = new List(); public ICollection Mentions { get; set; } = new List(); + public ICollection Reactions { get; set; } = new List(); }