using System.ComponentModel.DataAnnotations;
namespace Extrudex.API.DTOs.Filaments;
///
/// Query parameters for filtering and paginating the filament list endpoint.
/// All parameters are optional — defaults are applied when not provided.
///
public class FilamentQueryParameters
{
/// Page number (1-based). Defaults to 1.
[Range(1, int.MaxValue, ErrorMessage = "PageNumber must be at least 1.")]
public int PageNumber { get; set; } = 1;
/// Number of items per page. Defaults to 20, max 100.
[Range(1, 100, ErrorMessage = "PageSize must be between 1 and 100.")]
public int PageSize { get; set; } = 20;
/// Optional filter by material base ID.
public Guid? MaterialBaseId { get; set; }
/// Optional filter by material finish ID.
public Guid? MaterialFinishId { get; set; }
/// Optional filter by material modifier ID.
public Guid? MaterialModifierId { get; set; }
/// Optional filter by brand name (case-insensitive partial match).
public string? Brand { get; set; }
/// Optional filter by active status. True = active only, False = inactive only.
public bool? IsActive { get; set; }
/// Whether to include archived spools in results. Defaults to false (excludes archived).
///
public bool? IncludeArchived { get; set; }
/// Optional filter by storage location (case-insensitive partial match).
public string? StorageLocation { get; set; }
}