44 lines
1.1 KiB
C#
44 lines
1.1 KiB
C#
using Hutopy.Modules.Messaging.Data;
|
|
using Hutopy.Modules.Messaging.Models;
|
|
|
|
namespace Hutopy.Modules.Messaging.Handlers;
|
|
|
|
[PublicAPI]
|
|
public class GetRepliesRequest
|
|
{
|
|
public Guid SubjectId { get; set; }
|
|
public Guid ParentId { get; set; }
|
|
[BindFrom("page_size")] public int PageSize { get; set; } = 10;
|
|
[BindFrom("last_id")] public Guid? LastId { get; set; }
|
|
}
|
|
|
|
[PublicAPI]
|
|
public record struct GetRepliesResponse(
|
|
IEnumerable<MessageDto> Messages);
|
|
|
|
public class GetReplies(
|
|
MessagingDbContext context)
|
|
: Endpoint<GetRepliesRequest, GetRepliesResponse>
|
|
{
|
|
public override void Configure()
|
|
{
|
|
Get("/api/messages/{ParentId:guid}/replies");
|
|
Options(o => o.WithTags("Messages"));
|
|
AllowAnonymous();
|
|
}
|
|
|
|
public override async Task HandleAsync(
|
|
GetRepliesRequest req,
|
|
CancellationToken ct)
|
|
{
|
|
IEnumerable<MessageDto> replies = await context.GetMessagesAsync(
|
|
req.SubjectId,
|
|
req.ParentId,
|
|
req.LastId,
|
|
req.PageSize,
|
|
ct);
|
|
|
|
await SendOkAsync(new GetRepliesResponse(replies), ct);
|
|
}
|
|
}
|