using System.Text.Json.Serialization; using JetBrains.Annotations; namespace Recyclarr.TrashGuide.ReleaseProfile; [UsedImplicitly(ImplicitUseTargetFlags.WithMembers)] public record TermData { [JsonPropertyName("trash_id")] public string TrashId { get; init; } = string.Empty; public string Name { get; init; } = string.Empty; public string Term { get; init; } = string.Empty; public sealed override string ToString() { return $"[TrashId: {TrashId}] [Name: {Name}] [Term: {Term}]"; } } [UsedImplicitly(ImplicitUseTargetFlags.WithMembers)] public record PreferredTermData { public int Score { get; init; } public IReadOnlyCollection Terms { get; init; } = Array.Empty(); public void Deconstruct(out int score, out IReadOnlyCollection terms) { score = Score; terms = Terms; } public sealed override string ToString() { return $"[Score: {Score}] [Terms: {Terms.Count}]"; } } [UsedImplicitly(ImplicitUseTargetFlags.WithMembers)] public record ReleaseProfileData { [JsonPropertyName("trash_id")] public string TrashId { get; init; } = string.Empty; public string Name { get; init; } = string.Empty; public bool IncludePreferredWhenRenaming { get; init; } public IReadOnlyCollection Required { get; init; } = Array.Empty(); public IReadOnlyCollection Ignored { get; init; } = Array.Empty(); public IReadOnlyCollection Preferred { get; init; } = Array.Empty(); public sealed override string ToString() { return $"[TrashId: {TrashId}] " + $"[Name: {Name}] " + $"[IncludePreferred: {IncludePreferredWhenRenaming}] " + $"[Required: {Required.Count}] " + $"[Ignored: {Ignored.Count}] " + $"[Preferred: {Preferred.Count}]"; } }