using System.Text.Json.Serialization;
namespace PlaylistShared.Shared.DTO;
/// Универсальный контейнер ответа API.
/// Тип данных ответа.
public class ApiResponse
{
/// Успешен ли запрос.
[JsonPropertyName("success")]
public bool Success { get; set; }
/// Данные ответа (при успехе).
[JsonPropertyName("data")]
public T? Data { get; set; }
/// Сообщение (опционально).
[JsonPropertyName("message")]
public string? Message { get; set; }
/// Ошибка (при неудаче).
[JsonPropertyName("error")]
public ErrorResponse? Error { get; set; }
/// Создаёт успешный ответ.
public static ApiResponse Ok(T data, string? message = null) =>
new() { Success = true, Data = data, Message = message };
/// Создаёт ответ с ошибкой.
public static ApiResponse Fail(ErrorResponse error) =>
new() { Success = false, Error = error };
}