using Knot.Modules.Messaging.Domain; namespace Knot.Modules.Messaging.Domain; public interface IMessageRepository { void Add(Message message); Task GetByIdAsync(Guid id, CancellationToken cancellationToken); Task> GetChatMessagesAsync(Guid chatId, int limit, int offset, CancellationToken cancellationToken); Task GetLatestChatMessageAsync(Guid chatId, CancellationToken cancellationToken); Task> SearchMessagesAsync(string query, Guid? chatId, Guid requestingUserId, CancellationToken cancellationToken); Task> GetChatMessagesCursorAsync(Guid chatId, DateTime? cursor, int limit, CancellationToken cancellationToken); Task GetLastStoryMessageAsync(Guid chatId, Guid storyId, CancellationToken cancellationToken); Task UpdateAsync(Message message, CancellationToken cancellationToken); Task> GetAllMessagesAsync(CancellationToken cancellationToken); Task DeleteChatMessagesAsync(Guid chatId, CancellationToken cancellationToken); Task DeleteUserMessagesAsync(Guid userId, CancellationToken cancellationToken); Task RemoveAsync(Guid id, CancellationToken cancellationToken); }