using Hutopy.Modules.Messaging.Data; using Hutopy.Modules.Messaging.Models; namespace Hutopy.Modules.Messaging.Handlers; [PublicAPI] public sealed class GetMessagesRequest { public Guid SubjectId { get; set; } [BindFrom("page_size")] public int PageSize { get; set; } = 10; [BindFrom("last_id")] public Guid? LastId { get; set; } } [PublicAPI] public record struct GetMessagesResponse( IEnumerable Messages); public class GetMessages( MessagingDbContext context) : Endpoint { public override void Configure() { Get("/api/messages/{SubjectId:guid}"); Options(o => o.WithTags("Messages")); AllowAnonymous(); } public override async Task HandleAsync( GetMessagesRequest req, CancellationToken ct) { IEnumerable messages = await context.GetMessagesAsync( req.SubjectId, null, req.LastId, req.PageSize, ct); await SendOkAsync(new GetMessagesResponse(messages), ct); } }