fraiseql_wire/lib.rs
1//! fraiseql-wire: Streaming JSON query engine for Postgres 17
2//!
3//! This crate provides a minimal, async Rust query engine that streams JSON
4//! data from Postgres with low latency and bounded memory usage.
5//!
6//! # Supported Query Shape
7//!
8//! ```sql
9//! SELECT data
10//! FROM v_{entity}
11//! WHERE predicate
12//! [ORDER BY expression]
13//! ```
14
15#![warn(missing_docs, rust_2018_idioms)]
16// Pedantic allows — workspace sets pedantic = deny. These are suppressed for this crate.
17#![allow(clippy::cast_precision_loss)] // Reason: intentional f64 conversions for metrics counters
18#![allow(clippy::cast_possible_truncation)] // Reason: intentional usize/u64 casts for buffer sizes
19#![allow(clippy::cast_sign_loss)] // Reason: duration/size values are always positive
20#![allow(clippy::cast_possible_wrap)] // Reason: byte counts within positive range
21#![allow(clippy::items_after_statements)] // Reason: helper structs near point of use for clarity
22#![allow(clippy::format_push_string)] // Reason: incremental query string building
23#![allow(clippy::needless_continue)] // Reason: explicit continues in wire protocol loops
24#![allow(clippy::match_same_arms)] // Reason: explicit arms document each protocol variant
25#![allow(clippy::manual_let_else)] // Reason: match with early return is clearer here
26#![allow(clippy::iter_with_drain)] // Reason: drain pattern for ownership transfer in buffers
27#![allow(clippy::no_effect_underscore_binding)] // Reason: placeholder bindings for protocol fields
28#![allow(clippy::needless_pass_by_value)] // Reason: API consistency with async trait bounds
29#![allow(clippy::implicit_hasher)] // Reason: HashMap type params explicit at call sites
30#![allow(clippy::doc_link_with_quotes)] // Reason: quoted protocol names in docs are intentional
31#![allow(clippy::unreadable_literal)] // Reason: large numeric literals in test assertions and protocol sizes
32#![allow(clippy::doc_markdown)] // Reason: parameter names in docstrings without backticks
33#![allow(clippy::map_unwrap_or)] // Reason: map/unwrap patterns in test examples
34#![allow(clippy::explicit_iter_loop)] // Reason: explicit iteration in test setup
35#![allow(clippy::range_plus_one)] // Reason: range expressions in examples
36
37#[cfg(not(unix))]
38compile_error!("fraiseql-wire only supports Unix-like operating systems (Linux, macOS).");
39
40pub mod auth;
41pub mod client;
42pub mod connection;
43pub mod error;
44pub mod json;
45pub mod metrics;
46pub mod operators;
47pub mod protocol;
48pub mod stream;
49pub mod util;
50
51// Re-export commonly used types
52pub use client::FraiseClient;
53pub use error::{Error, Result};
54pub use operators::{Field, OrderByClause, SortOrder, Value, WhereOperator};
55
56/// Library version
57pub const VERSION: &str = env!("CARGO_PKG_VERSION");