using System.Collections.ObjectModel;
using System.Text.Json.Serialization;

namespace File_Folder_Helper.Models;

internal record Card(ReadOnlyCollection<string>? Assignees,
                     DateTime CreationDateTime,
                     string Directory,
                     string? Effort,
                     string Extension,
                     string File,
                     string FileName,
                     string FileNameWithoutExtension,
                     string H1,
                     ReadOnlyCollection<H2HexColor>? H2HexColorCollection,
                     ReadOnlyCollection<H2NoCheckboxes>? H2NoCheckboxesCollection,
                     ReadOnlyCollection<H2WithCheckboxes>? H2WithCheckboxesCollection,
                     DateTime LastWriteDateTime,
                     LineNumber LineNumber,
                     string? RequestedDateTime,
                     string Type);

[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(Card))]
internal partial class CardSourceGenerationContext : JsonSerializerContext
{
}

[JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
[JsonSerializable(typeof(ReadOnlyDictionary<string, List<Card>>))]
internal partial class ColumnsAndCardsSourceGenerationContext : JsonSerializerContext
{
}