Split creators out of identity
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
using FastEndpoints;
|
||||
using FluentValidation;
|
||||
using Hutopy.Application.Common.Interfaces;
|
||||
using Hutopy.Application.Common.Models;
|
||||
using Hutopy.Web.Features.Contents.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Hutopy.Web.Features.Contents.Handlers;
|
||||
|
||||
public sealed class GetCreatorByAliasRequest
|
||||
{
|
||||
public string CreatorAlias { get; init; }
|
||||
public required string Name { get; set; }
|
||||
}
|
||||
|
||||
public sealed class GetCreatorByAliasRequestValidator
|
||||
@@ -15,20 +15,20 @@ public sealed class GetCreatorByAliasRequestValidator
|
||||
{
|
||||
public GetCreatorByAliasRequestValidator()
|
||||
{
|
||||
RuleFor(r => r.CreatorAlias)
|
||||
.NotNull().WithMessage("You should specify the CreatorAlias")
|
||||
.NotEmpty().WithMessage("You should specify a valid/not empty CreatorAlias");
|
||||
RuleFor(r => r.Name)
|
||||
.NotNull().WithMessage("You should specify the Name")
|
||||
.NotEmpty().WithMessage("You should specify a valid/not empty Name");
|
||||
}
|
||||
}
|
||||
|
||||
public class GetCreatorByAlias(
|
||||
IIdentityService identityService)
|
||||
: Endpoint<GetCreatorByAliasRequest, UserModel?>
|
||||
public class GetCreatorByAliasHandler(
|
||||
ContentDbContext context)
|
||||
: Endpoint<GetCreatorByAliasRequest, Creator>
|
||||
{
|
||||
public override void Configure()
|
||||
{
|
||||
Get("/api/creators/@{Name}");
|
||||
Options((o => o.WithTags("Creators")));
|
||||
Get("/api/creators/@{CreatorAlias}");
|
||||
AllowAnonymous();
|
||||
}
|
||||
|
||||
@@ -36,10 +36,13 @@ public class GetCreatorByAlias(
|
||||
GetCreatorByAliasRequest req,
|
||||
CancellationToken ct)
|
||||
{
|
||||
var user = await identityService.FindUserByCreatorAliasAsync(
|
||||
req.CreatorAlias,
|
||||
ct);
|
||||
var creator = await context
|
||||
.Creators
|
||||
.SingleOrDefaultAsync(
|
||||
c => EF.Functions.Like(c.Name, req.Name),
|
||||
cancellationToken: ct);
|
||||
|
||||
await SendAsync(user, cancellation: ct);
|
||||
if (creator is null) await SendNotFoundAsync(ct);
|
||||
else await SendAsync(creator, cancellation: ct);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user