From 2e866075a2be6882adee0f3b49c2d56fccbc8a2a Mon Sep 17 00:00:00 2001 From: XShine555 Date: Tue, 14 Jul 2026 13:54:12 +0200 Subject: [PATCH] feat(backend): expose track duration and listen count in track response --- .../Tracks/Responses/TrackApplicationResponse.cs | 6 ++++++ backend/Musify.Domain/Entities/Track.cs | 6 +++++- backend/Musify.Domain/Entities/User.cs | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/backend/Musify.Application/Tracks/Responses/TrackApplicationResponse.cs b/backend/Musify.Application/Tracks/Responses/TrackApplicationResponse.cs index 83d3fa7..9c83465 100644 --- a/backend/Musify.Application/Tracks/Responses/TrackApplicationResponse.cs +++ b/backend/Musify.Application/Tracks/Responses/TrackApplicationResponse.cs @@ -5,14 +5,20 @@ namespace Musify.Application.Tracks.Responses public record TrackApplicationResponse( Guid Id, string Title, + int Duration, + int ListensCount, DateTime CreatedAt, DateTime UpdatedAt) { public static TrackApplicationResponse FromEntity(Track track) { + var count = track.ListeningHistories.Count(x => x.TrackId == track.Id); + return new TrackApplicationResponse( track.Id, track.Title, + track.Duration, + count, track.CreatedAt, track.UpdatedAt); } diff --git a/backend/Musify.Domain/Entities/Track.cs b/backend/Musify.Domain/Entities/Track.cs index 8299c3d..64a3daf 100644 --- a/backend/Musify.Domain/Entities/Track.cs +++ b/backend/Musify.Domain/Entities/Track.cs @@ -1,7 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics.CodeAnalysis; - using Musify.Domain.Abstractions; using Musify.Domain.ValueObjects; @@ -21,6 +20,9 @@ namespace Musify.Domain.Entities [MaxLength(50)] public required string NormalizedTitle { get; set; } + [Required] + public int Duration { get; set; } + [Required] [MaxLength(64)] public required string OriginalPictureName { get; set; } @@ -65,6 +67,8 @@ namespace Musify.Domain.Entities public ICollection PlayListTracks { get; set; } = new List(); + public ICollection ListeningHistories { get; set; } = new List(); + [NotMapped] [MemberNotNullWhen(true, nameof(SmallPictureName)) ] [MemberNotNullWhen(true, nameof(MediumPictureName)) ] diff --git a/backend/Musify.Domain/Entities/User.cs b/backend/Musify.Domain/Entities/User.cs index 184dbc6..8030e65 100644 --- a/backend/Musify.Domain/Entities/User.cs +++ b/backend/Musify.Domain/Entities/User.cs @@ -37,5 +37,7 @@ namespace Musify.Domain.Entities public ICollection UserTracks { get; set; } = new List(); public ICollection PlayLists { get; set; } = new List(); + + public ICollection ListeningHistories { get; set; } = new List(); } } \ No newline at end of file