using FastEndpoints; using Hutopy.Web.Common; using Hutopy.Web.Features.Messages.Data; namespace Hutopy.Web.Features.Messages.Handlers; internal sealed class AddReplyRequest { public required Guid SubjectId { get; set; } public required Guid ParentId { get; set; } public required string Message { get; set; } } internal sealed class AddReply( MessagingDbContext context) : Endpoint { public override void Configure() { Post("/api/messages/{ParentId:guid}/replies"); Options(o => o.WithTags("Messages")); } public override async Task HandleAsync( AddReplyRequest req, CancellationToken ct) { var message = new Message { Id = GuidHelper.GenerateUuidV7(), SubjectId = req.SubjectId, ParentId = req.ParentId, CreatedBy = User.GetUserId(), Value = req.Message }; await context.Messages.AddAsync(message, ct); await context.SaveChangesAsync(ct); } }