cai-query
SQL-like query engine for CAI entries.
Overview
cai-query provides a SQL parser and execution engine for querying AI coding interactions stored via cai-storage. Supports SELECT statements with WHERE, ORDER BY, LIMIT, and custom aggregate functions.
Usage
Basic Query
use ;
use MemoryStorage;
async
Convenience Function
use sql;
let results = sql.await?;
Query Language
SELECT
SELECT * FROM entries LIMIT 10
SELECT source, COUNT(*) FROM entries GROUP BY source
WHERE
SELECT * FROM entries WHERE source = 'Claude'
SELECT * FROM entries WHERE timestamp > '2024-01-01'
Aggregate Functions
SELECT COUNT(*) FROM entries
SELECT source, COUNT(*), AVG(length(prompt)) FROM entries GROUP BY source
Date Functions
-- Date range filter
SELECT * FROM entries
WHERE date_range(timestamp, '2024-01-01', '2024-01-31')
-- Time bucket grouping
SELECT time_bucket(timestamp, 'day') as day, COUNT(*)
FROM entries
GROUP BY day
Built-in Functions
- COUNT: Count entries
- SUM: Sum numeric values
- AVG: Average of values
- MIN/MAX: Minimum/Maximum values
- date_range: Filter by date range
- time_bucket: Group by time periods
Usage
Add to your Cargo.toml:
[]
= { = "../cai-query" }
Design Decisions
- sqlparser-rust: Compatible SQL syntax
- Custom executor: Optimized for CAI's data model
- Extensible functions: Easy to add custom functions
Testing
License
MIT OR Apache-2.0