using CliFx.Attributes;

namespace AaLog.Cli.Commands
{
    /// Shared option set inherited by every read command. Kept as an abstract base so
    /// CliFx still treats each subclass as a distinct command, but option declarations
    /// only live in one place.
    public abstract class ReadCommandBase
    {
        [CommandOption("log-dir", Description = "Override the log directory. Defaults to C:\\ProgramData\\ArchestrA\\LogFiles.")]
        public string LogDirectory { get; init; }

        [CommandOption("component", Description = "Substring (or regex with --regex) to match against the Component field.")]
        public string Component { get; init; }

        [CommandOption("level", Description = "Substring (or regex with --regex) to match against the Level / LogFlag field (Info, Warning, Error, ...).")]
        public string Level { get; init; }

        [CommandOption("message", Description = "Substring (or regex with --regex) to match against the Message body.")]
        public string Message { get; init; }

        [CommandOption("regex", Description = "Treat --component / --level / --message as regular expressions instead of substrings.")]
        public bool UseRegex { get; init; }

        [CommandOption("llm-json", Description = "Emit a stable JSON envelope { query, count, records } instead of human-readable lines.")]
        public bool LlmJson { get; init; }
    }
}
