Wire FilterBar query AST into logs/timeline queries (ticket 007)
Adds a filter evaluator in engine.rs that compiles a parsed FilterExpr against the current index once per query (regex compiled once, sequence/timestamp compared directly against IngestedLog fields, other metric comparisons resolved to a HashSet<u64> of matching sequences via a bucket scan) and evaluates it per log line with no further index access. Wires this into EngineQuery::Logs/Timeline via a new LogsParams::filter/TimelineParams::filter field, and adds EngineResponse::Error so a malformed filter string surfaces as a query-level error (mapped to 400 in api.rs). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XFUNZwCvz3kcod3352ZR2o
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
49e8590cf3
commit
86a1a40243
@@ -16,9 +16,11 @@
|
||||
//! - `and` / `or` boolean combinators, with `and` binding tighter than `or`.
|
||||
//! - Parenthesized sub-expressions.
|
||||
//!
|
||||
//! Nothing in `main.rs` calls into this module yet — it is wired up by a
|
||||
//! later integration ticket — so the compiler's dead-code lint is silenced
|
||||
//! for the whole module rather than for each individual item.
|
||||
//! `engine.rs` (ticket 007) is what actually calls into this module: it
|
||||
//! compiles the returned [`FilterExpr`] against the index (resolving
|
||||
//! [`FilterValue::Raw`] tokens via `filter_datetime` and metric comparisons
|
||||
//! via bucket data) and evaluates it per log line while answering
|
||||
//! `EngineQuery::Logs`/`Timeline`.
|
||||
#![allow(dead_code)]
|
||||
|
||||
use pest::Parser;
|
||||
|
||||
Reference in New Issue
Block a user