using Hutopy.Modules.Memberships.Data; namespace Hutopy.Modules.Memberships.Handlers; [PublicAPI] public record GetMembershipTiersRequest { public Guid CreatorId { get; set; } } [PublicAPI] public record struct TierModel( Guid Id, DateTimeOffset CreatedAt, string Name, string Description, decimal Price, string CurrencyCode, string StripeProductId); [PublicAPI] public class GetMembershipTiersEndpoint( MembershipsDbContext dbContext) : Endpoint> { public override void Configure() { Get("/api/memberships/tiers/{CreatorId:guid}"); Options(o => o.WithTags("Memberships")); AllowAnonymous(); } public override async Task HandleAsync( GetMembershipTiersRequest req, CancellationToken ct) { List tiers = await dbContext .MembershipTiers .Where(tier => tier.CreatorId == req.CreatorId) .Select(tier => new TierModel( tier.Id, tier.CreatedAt, tier.Name, tier.Description, tier.Price, tier.CurrencyCode, tier.StripeProductId)) .ToListAsync(ct); await SendOkAsync(tiers, ct); } }