Adds the REST surface for the #145 troubleshooting leftovers (#158 items 4-5): - GET /api/playouts/{id}/blocks - blocks a block playout schedules - GET /api/playouts/{id}/blocks/{blockId}/history - paged block history - GET /api/playouts/history/{id} - decode a history row by id - POST /api/troubleshoot/validate-schedule - validate sequential YAML New MediatR queries GetPlayoutHistoryDetails (Either, 404 unknown row / 422 malformed JSON) and ValidateSequentialSchedule (wraps ISequentialScheduleValidator, never throws). DecodePlayoutHistoryHandler and the new by-id handler now share PlayoutHistoryDecoder. Regenerated openapi/v1.json. Refs #145 #158 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
22 lines
753 B
C#
22 lines
753 B
C#
using ErsatzTV.Infrastructure.Data;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace ErsatzTV.Application.Troubleshooting.Queries;
|
|
|
|
public class DecodePlayoutHistoryHandler(IDbContextFactory<TvContext> dbContextFactory)
|
|
: IRequestHandler<DecodePlayoutHistory, PlayoutHistoryDetailsViewModel>
|
|
{
|
|
public async Task<PlayoutHistoryDetailsViewModel> Handle(
|
|
DecodePlayoutHistory request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
await using TvContext dbContext = await dbContextFactory.CreateDbContextAsync(cancellationToken);
|
|
|
|
return await PlayoutHistoryDecoder.Decode(
|
|
dbContext,
|
|
request.PlayoutHistory.Key,
|
|
request.PlayoutHistory.Details,
|
|
cancellationToken);
|
|
}
|
|
}
|