using JSMR.Domain.Enums;

namespace JSMR.Application.VoiceWorks.Queries.Search;

public record VoiceWorkSearchResult
{
    public int VoiceWorkId { get; init; }
    public required string ProductId { get; init; }
    public string? OriginalProductId { get; init; }
    public string? Description { get; init; }
    public required string ProductName { get; init; }
    public required string ProductUrl { get; init; }
    public bool HasImage { get; init; }
    public required string Maker { get; init; }
    public required string MakerId { get; init; }
    public DateTime? ExpectedDate { get; init; }
    public DateTime? SalesDate { get; init; }
    public DateTime? PlannedReleaseDate { get; init; }
    public int? Downloads { get; init; }
    public int? WishlistCount { get; init; }
    public byte? StarRating { get; init; }
    public int? Votes { get; init; }
    public bool HasTrial { get; init; }
    public bool HasChobit { get; init; }
    public AgeRating Rating { get; init; }
    public bool Favorite { get; init; }
    public byte Status { get; init; }
    public byte SubtitleLanguage { get; init; }
    public bool? IsValid { get; init; }
    public VoiceWorkTagItem[] Tags { get; set; } = [];
    public VoiceWorkCreatorItem[] Creators { get; set; } = [];
}

public class VoiceWorkTagItem
{
    public int TagId { get; set; }
    public required string Name { get; set; }
}

public class VoiceWorkCreatorItem
{
    public int CreatorId { get; set; }
    public required string Name { get; set; }
}