using JSMR.Domain.Enums; namespace JSMR.Application.VoiceWorks.Queries.Search; public record VoiceWorkSearchResult { public int VoiceWorkId { get; set; } public required string ProductId { get; set; } public string? OriginalProductId { get; set; } public string? Description { get; set; } public required string ProductName { get; set; } public required string ProductUrl { get; set; } public bool HasImage { get; set; } public required string Maker { get; set; } public required string MakerId { get; set; } public DateTime? ExpectedDate { get; set; } public DateTime? SalesDate { get; set; } public DateTime? PlannedReleaseDate { get; set; } public int? Downloads { get; set; } public int? WishlistCount { get; set; } public byte? StarRating { get; set; } public int? Votes { get; set; } public bool HasTrial { get; set; } public bool HasChobit { get; set; } public AgeRating Rating { get; set; } public bool Favorite { get; set; } public byte Status { get; set; } public byte SubtitleLanguage { get; set; } public bool? IsValid { get; set; } public required VoiceWorkCircleItem Circle { get; set; } public VoiceWorkCircleItem? OriginalCircle { get; set; } public VoiceWorkTagItem[] Tags { get; set; } = []; public VoiceWorkCreatorItem[] Creators { get; set; } = []; public string[] SupportedLanguages { get; set; } = []; } public class VoiceWorkCircleItem { public required string Name { get; init; } public required string MakerId { get; init; } public bool IsFavorite { get; init; } public bool IsBlacklisted { get; init; } } public class VoiceWorkTagItem { public int TagId { get; set; } public required string Name { get; set; } public bool IsFavorite { get; set; } public bool IsBlacklisted { get; set; } } public class VoiceWorkCreatorItem { public int CreatorId { get; set; } public required string Name { get; set; } public bool IsFavorite { get; set; } public bool IsBlacklisted { get; set; } }