using System.Text.Json;
using System.Text.Json.Serialization;

namespace WinLog.Models;

[method: JsonConstructor]
public class AppSettings(string dateFormat,
                         string directory,
                         string logFilter,
                         string[] messageFilters,
                         string monitorApplicationResource,
                         string monitorApplicationSite,
                         int millisecondsDelay,
                         int rollingMinutes)
{

    public string DateFormat { init; get; } = dateFormat;
    public string Directory { init; get; } = directory;
    public string LogFilter { init; get; } = logFilter;
    public string[] MessageFilters { init; get; } = messageFilters;
    public string MonitorApplicationResource { init; get; } = monitorApplicationResource;
    public string MonitorApplicationSite { init; get; } = monitorApplicationSite;
    public int MillisecondsDelay { init; get; } = millisecondsDelay;
    public int RollingMinutes { init; get; } = rollingMinutes;

    public override string ToString()
    {
        string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings);
        return result;
    }

}

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