namespace Extrudex.Infrastructure.Configuration;

/// <summary>
/// Configuration options for the FilamentUsageSync background job.
/// Bound from appsettings.json under the "FilamentUsageSync" section.
/// Controls polling interval and per-printer timeout settings.
/// </summary>
public class FilamentUsageSyncOptions
{
    /// <summary>
    /// The section name in appsettings.json where these options are bound.
    /// </summary>
    public const string SectionName = "FilamentUsageSync";

    /// <summary>
    /// How often the background job polls printers for usage data.
    /// Default: 5 minutes. Minimum recommended: 1 minute.
    /// </summary>
    public TimeSpan PollingInterval { get; set; } = TimeSpan.FromMinutes(5);

    /// <summary>
    /// Timeout for individual HTTP requests to a Moonraker printer.
    /// Default: 30 seconds.
    /// </summary>
    public TimeSpan RequestTimeout { get; set; } = TimeSpan.FromSeconds(30);

    /// <summary>
    /// Whether the sync job is enabled. Set to false to disable
    /// the background job without removing its registration.
    /// Default: true.
    /// </summary>
    public bool Enabled { get; set; } = true;
}