38 lines
1.6 KiB
C#
38 lines
1.6 KiB
C#
using DeepDrftModels.Enums;
|
|
|
|
namespace DeepDrftModels.DTOs;
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public class HomeStatsDto
|
|
{
|
|
/// <summary>Total non-deleted tracks whose release is the Cut medium. The Studio Cuts card's primary figure.</summary>
|
|
public int CutTrackCount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public List<CutReleaseTypeCount> CutReleaseTypeCounts { get; set; } = [];
|
|
|
|
/// <summary>Total non-deleted releases of the Mix medium. The Mixes card's primary figure ("N Sets").</summary>
|
|
public int MixReleaseCount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public double MixRuntimeSeconds { get; set; }
|
|
}
|
|
|
|
/// <summary>One row of the Cut release-type breakdown: a ReleaseType and how many Cut releases have it.</summary>
|
|
public class CutReleaseTypeCount
|
|
{
|
|
public ReleaseType ReleaseType { get; set; }
|
|
public int Count { get; set; }
|
|
}
|