namespace Govor.Core.Models; public class Message { public Guid Id { get; set; } public Guid SenderId { get; set; } public Guid RecipientId { get; set; } // or GroupId public RecipientType RecipientType { get; set; } public string EncryptedContent { get; set; } = string.Empty; public DateTime SentAt { get; set; } public bool IsEdited { get; set; } = false; public DateTime? EditedAt { get; set; } public List Reactions { get; set; } = new List(); public List MediaAttachments { get; set; } = new List(); public List MessageViews { get; set; } = new List(); public Guid? ReplyToMessageId { get; set; } public override bool Equals(object? obj) { if (obj is not Message other) return false; return Id == other.Id && SenderId == other.SenderId && RecipientId == other.RecipientId && RecipientType == other.RecipientType && EncryptedContent == other.EncryptedContent && SentAt == other.SentAt && IsEdited == other.IsEdited && EditedAt == other.EditedAt && ReplyToMessageId == other.ReplyToMessageId; } } public enum RecipientType { User, Group }