using PlaylistShared.Shared.Enums;
using System.Text.Json.Serialization;
namespace PlaylistShared.Shared.Models;
/// 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; }
}