#![allow(dead_code)]

use rsigma_eval::{
    CorrelationConfig, CorrelationEngine, Engine, JsonEvent, MatchResult, ProcessResult,
};
use rsigma_parser::parse_sigma_yaml;
use serde_json::Value;

pub fn eval(yaml: &str, event_json: Value) -> Vec<MatchResult> {
    let collection = parse_sigma_yaml(yaml).unwrap();
    let mut engine = Engine::new();
    engine.add_collection(&collection).unwrap();
    let event = JsonEvent::borrow(&event_json);
    engine.evaluate(&event)
}

pub fn corr_engine(yaml: &str) -> CorrelationEngine {
    corr_engine_with_config(yaml, CorrelationConfig::default())
}

pub fn corr_engine_with_config(yaml: &str, config: CorrelationConfig) -> CorrelationEngine {
    let collection = parse_sigma_yaml(yaml).unwrap();
    let mut engine = CorrelationEngine::new(config);
    engine.add_collection(&collection).unwrap();
    engine
}

pub fn process(engine: &mut CorrelationEngine, event_json: Value, ts: i64) -> ProcessResult {
    let event = JsonEvent::borrow(&event_json);
    engine.process_event_at(&event, ts)
}
