many fixes and improvements - rework for modules/ and common/

feat(emailer): add Postmark and Resend providers
This commit is contained in:
2025-06-06 12:21:43 -04:00
parent 31ba18fa8d
commit 25b94d3e02
313 changed files with 6586 additions and 18260 deletions

View File

@@ -0,0 +1,59 @@
using Hutopy.Modules.Identity.Contracts;
using Hutopy.Modules.Messaging.Data;
using Hutopy.Modules.Messaging.Models;
namespace Hutopy.Modules.Messaging.Handlers;
[PublicAPI]
public class GetMessagesByUserRequest
{
public Guid UserId { get; set; }
}
[PublicAPI]
public record struct GetMessagesByUserResponse(
IEnumerable<MessageDto> Messages);
public class GetMessagesByUser(
IUserLookup userLookup,
MessagingDbContext context)
: Endpoint<GetMessagesByUserRequest, GetMessagesByUserResponse>
{
public override void Configure()
{
Get("/api/messages/user/{UserId:guid}");
Options(o => o.WithTags("Messages"));
AllowAnonymous();
}
public override async Task HandleAsync(
GetMessagesByUserRequest req,
CancellationToken ct)
{
var messages = await context
.Messages
.Where(c => c.CreatedBy == req.UserId)
.Where(c => c.ParentId == null)
.ToListAsync(cancellationToken: ct);
var result = await Task.WhenAll(
messages.Select(async message =>
{
var user = await userLookup.GetUserAsync(message.CreatedBy, ct);
return new MessageDto
{
Id = message.Id,
ParentId = message.ParentId,
CreatedAt = message.CreatedAt,
CreatedBy = message.CreatedBy,
CreatedByName = user?.Fullname ?? "Unknown User",
CreatedByPortraitUrl = user?.PortraitUrl ?? "",
SubjectId = message.SubjectId,
Value = message.Value
};
}));
await SendOkAsync(new GetMessagesByUserResponse(result), ct);
}
}