using PlaylistShared.Shared.Auth; using PlaylistShared.Shared.Enums; using System.Text.Json.Serialization; namespace PlaylistShared.Shared.Shared; /// DTO шеринг-плейлиста (без навигационных свойств). public class SharedPlaylistDto { /// Уникальный идентификатор записи. [JsonPropertyName("id")] public Guid Id { get; set; } /// Идентификатор пользователя-создателя (владельца). [JsonPropertyName("creatorUserId")] public Guid CreatorUserId { get; set; } /// Идентификатор плейлиста в Яндекс.Музыке (kind). [JsonPropertyName("yandexPlaylistKind")] public string YandexPlaylistKind { get; set; } = null!; /// Идентификатор владельца плейлиста в Яндекс.Музыке (uid). [JsonPropertyName("yandexPlaylistOwnerUid")] public string YandexPlaylistOwnerUid { get; set; } = null!; /// Название плейлиста. [JsonPropertyName("title")] public string Title { get; set; } = null!; /// Описание плейлиста. [JsonPropertyName("description")] public string? Description { get; set; } /// URL обложки плейлиста. [JsonPropertyName("coverUrl")] public string? CoverUrl { get; set; } /// Дата создания записи. [JsonPropertyName("createdAt")] public DateTime CreatedAt { get; set; } /// Дата последнего обновления. [JsonPropertyName("updatedAt")] public DateTime UpdatedAt { get; set; } /// Признак мягкого удаления. [JsonPropertyName("isDeleted")] public bool IsDeleted { get; set; } /// Уникальный токен для публичной ссылки. [JsonPropertyName("shareToken")] public string ShareToken { get; set; } = null!; /// Права на просмотр. [JsonPropertyName("viewPermission")] public ViewPermission ViewPermission { get; set; } /// Права на добавление треков. [JsonPropertyName("addPermission")] public EditPermission AddPermission { get; set; } /// Права на удаление треков. [JsonPropertyName("removePermission")] public EditPermission RemovePermission { get; set; } /// Информация о создателе (опционально, подгружается отдельно). [JsonPropertyName("creator")] public ApplicationUserDto? Creator { get; set; } }