43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
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<MessageDto> Messages);
|
|
|
|
public class GetMessages(
|
|
MessagingDbContext context)
|
|
: Endpoint<GetMessagesRequest, GetMessagesResponse>
|
|
{
|
|
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<MessageDto> messages = await context.GetMessagesAsync(
|
|
req.SubjectId,
|
|
null,
|
|
req.LastId,
|
|
req.PageSize,
|
|
ct);
|
|
|
|
await SendOkAsync(new GetMessagesResponse(messages), ct);
|
|
}
|
|
}
|