using DeepDrftModels.Enums; namespace DeepDrftModels.Entities; /// /// Append-only log row for one recorded share (Phase 16 §4.2). Written once per share action that /// survives the per-(target,channel) client debounce; never updated or deleted. Like /// it is deliberately NOT a BaseEntity — an immutable fact with no soft-delete lifecycle. Shares /// carry their target directly (the popover knows track vs. release), so no server-side resolution step. /// public class ShareEvent { public long Id { get; set; } /// Whether the share targets a track or a release. public ShareTargetType TargetType { get; set; } /// /// The shared target's key: a track's vault EntryKey or a release's public EntryKey, /// selected by . Stored as the opaque key, not resolved to a SQL id — the /// share metric is a simple per-target tally and needs no join in wave 16.1. /// public required string TargetKey { get; set; } /// The channel the share was performed through (link vs. embed). public ShareChannel Channel { get; set; } /// /// Anonymous listener token (Phase 16 §3, wave 16.3). Reserved nullable; unused in wave 16.1. /// public string? AnonId { get; set; } public DateTime CreatedAt { get; set; } }