using DeepDrftModels.Enums; namespace DeepDrftModels.DTOs; /// /// Aggregate figures behind the public home hero stat row (NowPlayingStats). A single read returns /// everything the three cards need so the client makes one round-trip. All counts exclude soft-deleted /// rows. The Plays card is a static placeholder and has no field here. /// public class HomeStatsDto { /// Total non-deleted tracks whose release is the Cut medium. The Studio Cuts card's primary figure. public int CutTrackCount { get; set; } /// /// Per-ReleaseType counts of non-deleted Cut releases. Only types with at least one release are /// present — a zero-count type is absent from the list (the card suppresses it). The Studio Cuts /// card's secondary breakdown. /// public List CutReleaseTypeCounts { get; set; } = []; /// Total non-deleted releases of the Mix medium. The Mixes card's primary figure ("N Sets"). public int MixReleaseCount { get; set; } /// /// Sum of DurationSeconds across all non-deleted tracks on Mix releases. Tracks with a null /// duration (not yet backfilled) contribute 0. The Mixes card's secondary figure, rendered hh:mm. /// public double MixRuntimeSeconds { get; set; } } /// One row of the Cut release-type breakdown: a ReleaseType and how many Cut releases have it. public class CutReleaseTypeCount { public ReleaseType ReleaseType { get; set; } public int Count { get; set; } }