namespace Nuuru.Server.Services.Search.Tokens; /// /// Base class for all search tokens produced by the tokenizer. /// public abstract record SearchToken; /// /// A regular tag to include in search results. /// public record TagToken(string Name) : SearchToken; /// /// A tag to exclude from search results (prefixed with -). /// public record NegatedTagToken(string Name) : SearchToken; /// /// A wildcard tag pattern (ending with *). /// public record WildcardTagToken(string Prefix, bool Negated = false) : SearchToken; /// /// Start of an OR group ({). /// public record OrGroupStartToken : SearchToken; /// /// End of an OR group (}). /// public record OrGroupEndToken : SearchToken; /// /// OR separator within a group (~). /// public record OrSeparatorToken : SearchToken; /// /// A meta-tag for filtering by post properties (e.g., rating:safe, id:>100). /// public record MetaTagToken(string Key, MetaOperator Operator, string Value, bool Negated = false) : SearchToken; /// /// Operators for meta-tag comparisons. /// public enum MetaOperator { /// Exact match (rating:safe) Equals, /// Greater than (id:>100) GreaterThan, /// Less than (id:<100) LessThan, /// Greater than or equal (id:>=100) GreaterThanOrEqual, /// Less than or equal (id:<=100) LessThanOrEqual, /// Range (id:100..200) Range }