Clean up domain entities: shared picture value object, lifecycle and ownership interfaces, explicit tables

This commit is contained in:
2026-09-24 11:43:50 +02:00
parent 4d943e068e
commit 5a0f82b77b
45 changed files with 122 additions and 190 deletions
+3 -11
View File
@@ -5,39 +5,31 @@ using Musify.Domain.ValueObjects;
namespace Musify.Domain.Entities;
#pragma warning disable CS8618
public class Track : IAuditable
[Table("Tracks")]
public class Track : IAuditable, IHasLifeCycle, IOwnedEntity
{
[Key]
public Guid Id { get; set; } = Guid.NewGuid();
[Required]
[MaxLength(200)]
public required string Title { get; set; }
[Required]
[MaxLength(200)]
public required string NormalizedTitle { get; set; }
[Required]
public double DurationSeconds { get; set; }
[Required]
public required long OwnerUserId { get; set; }
[ForeignKey(nameof(OwnerUserId))]
public required User Owner { get; set; }
public User Owner { get; set; } = null!;
[Required]
public LifeCycleStatus LifeCycleStatus { get; set; } = LifeCycleStatus.Active;
[Required]
public bool IsExplicit { get; set; }
[Required]
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
[Required]
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
public TrackPictures Pictures { get; set; } = new();