using Hutopy.Web.Features.Memberships.Data; namespace Hutopy.Web.Features.Memberships.Handlers; [PublicAPI] public record GetMembershipTierRequest { public Guid CreatorId { get; set; } } [PublicAPI] public record struct TierModel( Guid Id, DateTime CreatedAt, string Name, string Description, decimal Price, string CurrencyCode, string StripeProductId); [PublicAPI] public class GetMembershipTierEndpoint( MembershipDbContext dbContext) : Endpoint> { public override void Configure() { Get("/api/membership/tiers/{CreatorId:guid}"); Options(o => o.WithTags("Memberships")); AllowAnonymous(); } public override async Task HandleAsync( GetMembershipTierRequest req, CancellationToken ct) { var tiers = await dbContext .Tiers .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); } }