using Hutopy.Web.Features.Contents.Data; namespace Hutopy.Web.Features.Contents.Handlers; [PublicAPI] public record ChangeSocialsRequest( Guid CreatorId, string? FacebookUrl, string? InstagramUrl, string? XUrl, string? LinkedInUrl, string? TikTokUrl, string? YoutubeUrl, string? RedditUrl, string? WebsiteUrl); [PublicAPI] public class ChangeSocialsHandler( ContentDbContext context) : Endpoint { public override void Configure() { Post("/api/creators/{CreatorId}/socials"); Options(o => o.WithTags("Creators")); } public override async Task HandleAsync(ChangeSocialsRequest request, CancellationToken ct) { var creator = await context .Creators .Include(c => c.Socials) .SingleAsync( c => c.Id == request.CreatorId, cancellationToken: ct); creator.Socials.FacebookUrl = request.FacebookUrl; creator.Socials.InstagramUrl = request.InstagramUrl; creator.Socials.XUrl = request.XUrl; creator.Socials.LinkedInUrl = request.LinkedInUrl; creator.Socials.TikTokUrl = request.TikTokUrl; creator.Socials.YoutubeUrl = request.YoutubeUrl; creator.Socials.RedditUrl = request.RedditUrl; creator.Socials.WebsiteUrl = request.WebsiteUrl; await context.SaveChangesAsync(ct); await SendOkAsync(ct); } }