using System;
using Knot.Shared.Kernel;

namespace Knot.Modules.Messaging.Domain;

/// <summary>
/// Агрегат/Сущность реакции для сообщения. Вынесен в отдельную коллекцию
/// для бесконечного масштабирования и чистоты DDD (Approach 3).
/// </summary>
public sealed class MessageReaction : AggregateRoot<Guid>
{
    public Guid MessageId { get; private set; }
    public Guid UserId { get; private set; }
    public string Emoji { get; private set; }
    public DateTime CreatedAt { get; private set; }

    private MessageReaction() : base(Guid.Empty) 
    {
        Emoji = default!;
    }

    public MessageReaction(Guid messageId, Guid userId, string emoji) : base(Guid.NewGuid())
    {
        MessageId = messageId;
        UserId = userId;
        Emoji = emoji;
        CreatedAt = DateTime.UtcNow;
    }
}


