feat(api): #288 wrap raw VMs, nullable-honest DTOs, search pageNum

24 #nullable enable flips across ErsatzTV.Core/Api; Collection/Schedule/
SmartCollection/Resolution VMs wrapped in ResponseModels (Version now
header-only, SPA-verified); pageNum threaded into GET /api/search.

Refs #288 #197

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 02:08:12 +02:00
co-authored by Claude Opus 4.8
parent 9e2d160884
commit fecf16d3d2
38 changed files with 189 additions and 45 deletions
@@ -0,0 +1,16 @@
#nullable enable
using ErsatzTV.Core.Scheduling;
namespace ErsatzTV.Core.Api.Scheduling;
// API response DTO for a program schedule. Mirrors the Application ProgramScheduleViewModel's
// config fields but omits the header-only optimistic-concurrency token (issue #253, #288): the
// schedule-items GET/PUT carry Version as an ETag header, so the SPA never reads it from the body.
public record ProgramScheduleResponseModel(
int Id,
string Name,
bool KeepMultiPartEpisodesTogether,
bool TreatCollectionsAsShows,
bool ShuffleScheduleItems,
bool RandomStartPoint,
FixedStartTimeBehavior FixedStartTimeBehavior);