42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
using Hutopy.Modules.Messaging.Data;
|
|
|
|
namespace Hutopy.Modules.Messaging.Handlers;
|
|
|
|
public sealed class GetMessageCountRequest
|
|
{
|
|
public Guid SubjectId { get; set; }
|
|
[BindFrom("page_size")] public int PageSize { get; set; } = 1000;
|
|
}
|
|
|
|
public record struct GetMessageCountResponse
|
|
{
|
|
public required int Count { get; init; }
|
|
}
|
|
|
|
public class GetMessageCount(
|
|
MessagingDbContext context)
|
|
: Endpoint<GetMessageCountRequest, GetMessageCountResponse>
|
|
{
|
|
public override void Configure()
|
|
{
|
|
Get("/api/messages/{SubjectId:guid}/count");
|
|
Options(o => o.WithTags("Messages"));
|
|
AllowAnonymous();
|
|
}
|
|
|
|
public override async Task HandleAsync(
|
|
GetMessageCountRequest req,
|
|
CancellationToken ct)
|
|
{
|
|
int messageCount = await context.GetMessageCountAsync(
|
|
req.SubjectId,
|
|
null,
|
|
req.PageSize,
|
|
ct);
|
|
|
|
await SendAsync(
|
|
new GetMessageCountResponse { Count = messageCount },
|
|
cancellation: ct);
|
|
}
|
|
}
|