Adds Creator's Color to each Content response

This commit is contained in:
2024-08-15 15:36:39 -04:00
parent 536e192ff4
commit 634e79b132
3 changed files with 28 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
using Hutopy.Web.Features.Contents.Data;
using Hutopy.Web.Features.Contents.Handlers.Models;
namespace Hutopy.Web.Features.Contents.Handlers;
@@ -11,7 +12,7 @@ public sealed class GetContentRequest
[PublicAPI]
public class GetContent(
ContentDbContext context)
: Endpoint<GetContentRequest, Content>
: Endpoint<GetContentRequest, ContentModel>
{
public override void Configure()
{
@@ -26,6 +27,19 @@ public class GetContent(
{
var content = await context
.Contents
.Select(c => new ContentModel
{
Id = c.Id,
CreatedBy = c.CreatedBy,
CreatedByName = c.Creator!.Name,
CreatedByPortraitUrl = c.Creator.Images.Logo,
CreatedAt = c.CreatedAt,
ColorMenu = c.Creator.Colors.Menu,
ColorAccent = c.Creator.Colors.Accent,
Title = c.Title,
Description = c.Description,
Urls = c.Urls,
})
.SingleOrDefaultAsync(
c => c.Id == req.ContentId,
cancellationToken: ct);

View File

@@ -30,10 +30,20 @@ public class GetContentsByCreatorHandler(
{
var queryBuilder = new StringBuilder();
queryBuilder.AppendLine($"""
SELECT content."Id", content."CreatedBy", creator."Name" as CreatedByName, i."Logo" as CreatedByPortraitUrl, content."CreatedAt", content."Title", content."Description", content."Urls"
SELECT content."Id",
content."CreatedBy",
creator."Name" as CreatedByName,
i."Logo" as CreatedByPortraitUrl,
c."Menu" as ColorMenu,
c."Accent" as ColorAccent,
content."CreatedAt",
content."Title",
content."Description",
content."Urls"
FROM "Content"."Contents" AS content
INNER JOIN "Content"."Creators" AS creator ON content."CreatedBy" = creator."Id"
LEFT JOIN "Content"."Images" AS i ON creator."Id" = i."CreatorId"
LEFT JOIN "Content"."Colors" AS c ON creator."Id" = c."CreatorId"
WHERE content."CreatedBy" = '{req.CreatorId}'
""");

View File

@@ -7,6 +7,8 @@ public class ContentModel
public required Guid CreatedBy { get; init; }
public required string CreatedByName { get; init; }
public required string? CreatedByPortraitUrl { get; init; }
public required string? ColorMenu { get; init; }
public required string? ColorAccent { get; init; }
public required DateTimeOffset CreatedAt { get; init; }
public required string Title { get; init; }
public required string Description { get; init; }