Add audience categorization for shows: implement ShowAudience type, update related API endpoints, and enhance frontend components for audience selection and display. Modify data structures to support audience information in show creation and retrieval processes.
build / backend (push) Successful in 3m35s
build / frontend (push) Successful in 52s
tests / backend-tests (push) Successful in 3m27s

This commit is contained in:
Leonid Pershin
2026-07-26 02:06:08 +03:00
parent 525fd2ee01
commit 8962840654
19 changed files with 1900 additions and 8 deletions
@@ -8,5 +8,6 @@ public sealed record CreateShowCommand(
string Name,
ShowKind Kind,
string? Description,
string? OriginalName = null
string? OriginalName = null,
ShowAudience Audience = ShowAudience.General
) : ICommand<Result<Guid>>;
@@ -14,7 +14,8 @@ public sealed class CreateShowCommandHandler(IAppDbContext dbContext)
command.Name,
command.Kind,
command.Description,
command.OriginalName
command.OriginalName,
command.Audience
);
dbContext.Shows.Add(show);
return Task.FromResult(Result.Success(show.Id));
@@ -61,6 +61,7 @@ public sealed class GetShowQueryHandler(IAppDbContext dbContext)
show.Name,
show.OriginalName,
show.Kind,
show.Audience,
show.Description,
show.MetadataProvider,
show.MetadataExternalId,
@@ -46,6 +46,7 @@ public sealed class ListShowsQueryHandler(IAppDbContext dbContext)
s.Name,
s.OriginalName,
s.Kind,
s.Audience,
s.Episodes.Count,
seasons,
s.Year,
@@ -0,0 +1,8 @@
using LiteCqrs;
using TeleWave.Application.Common.Models;
using TeleWave.Domain.Library;
namespace TeleWave.Application.Library.SetShowAudience;
/// <summary>Задать категорию аудитории шоу (обычное/детское/взрослое).</summary>
public sealed record SetShowAudienceCommand(Guid Id, ShowAudience Audience) : ICommand<Result>;
@@ -0,0 +1,26 @@
using LiteCqrs;
using Microsoft.EntityFrameworkCore;
using TeleWave.Application.Common.Interfaces;
using TeleWave.Application.Common.Models;
namespace TeleWave.Application.Library.SetShowAudience;
public sealed class SetShowAudienceCommandHandler(IAppDbContext dbContext)
: ICommandHandler<SetShowAudienceCommand, Result>
{
public async Task<Result> Handle(
SetShowAudienceCommand command,
CancellationToken cancellationToken
)
{
var show = await dbContext.Shows.FirstOrDefaultAsync(
s => s.Id == command.Id,
cancellationToken
);
if (show is null)
return Result.Failure(ShowErrors.NotFound);
show.SetAudience(command.Audience);
return Result.Success();
}
}
@@ -8,6 +8,7 @@ public sealed record ShowSummaryDto(
string Name,
string? OriginalName,
ShowKind Kind,
ShowAudience Audience,
int EpisodeCount,
int SeasonCount,
int? Year,
@@ -35,6 +36,7 @@ public sealed record ShowDto(
string Name,
string? OriginalName,
ShowKind Kind,
ShowAudience Audience,
string? Description,
string? MetadataProvider,
string? MetadataExternalId,