namespace Scry.Core.Models;

/// <summary>
/// Represents an MTG set. Maps to Scryfall's Set object.
/// </summary>
public record Set
{
    /// <summary>
    /// Scryfall's unique set ID.
    /// </summary>
    public required string Id { get; init; }
    
    /// <summary>
    /// Unique 3-6 letter set code (e.g., "lea", "mh2").
    /// </summary>
    public required string Code { get; init; }
    
    /// <summary>
    /// English name of the set (e.g., "Limited Edition Alpha").
    /// </summary>
    public required string Name { get; init; }
    
    /// <summary>
    /// Set classification (e.g., "expansion", "core", "masters", "commander").
    /// </summary>
    public string? SetType { get; init; }
    
    /// <summary>
    /// Release date in ISO 8601 format.
    /// </summary>
    public string? ReleasedAt { get; init; }
    
    /// <summary>
    /// Number of cards in the set.
    /// </summary>
    public int? CardCount { get; init; }
    
    /// <summary>
    /// URI to the set's icon SVG.
    /// </summary>
    public string? IconSvgUri { get; init; }
    
    /// <summary>
    /// Whether this is a digital-only set.
    /// </summary>
    public bool Digital { get; init; }
    
    /// <summary>
    /// Parent set code for promo/token sets.
    /// </summary>
    public string? ParentSetCode { get; init; }
    
    /// <summary>
    /// Block name, if applicable.
    /// </summary>
    public string? Block { get; init; }
}
