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; }
}