cratestack_sql/lib.rs
1//! Dialect-agnostic SQL primitives shared by the Postgres (`cratestack-sqlx`)
2//! and SQLite (`cratestack-rusqlite`) backends.
3//!
4//! This crate carries the type definitions every backend agrees on:
5//!
6//! - [`SqlValue`] / [`SqlColumnValue`] — value envelopes used to bind data
7//! - [`CreateModelInput`] / [`UpdateModelInput`] / [`UpsertModelInput`] —
8//! traits the codegen emits
9//! - [`Filter`] / [`FilterExpr`] / [`FieldRef`] — query AST
10//! - [`OrderClause`] / [`SortDirection`] — ordering AST
11//! - [`ModelDescriptor`] / [`ModelColumn`] / [`CreateDefault`] — schema
12//! metadata baked into compiled code by `include_schema!`
13//!
14//! Rendering SQL strings, executing queries, and any DB-driver coupling
15//! live in the backend crates.
16
17mod descriptor;
18mod dialect;
19mod filter;
20mod order;
21mod values;
22
23pub use descriptor::{
24 CreateDefault, CreateDefaultType, ModelColumn, ModelDescriptor, ReadSource, ViewDescriptor,
25 WriteSource,
26};
27pub use dialect::{Dialect, PostgresDialect, SqliteDialect};
28pub use filter::{
29 CoalesceExpr, CoalesceFilter, FieldRef, Filter, FilterExpr, FilterOp, IntoColumnName,
30 JsonFilter, JsonTextPath, RelationFilter, RelationQuantifier, SpatialFilter, SpatialPoint,
31 coalesce, point,
32};
33pub use order::{NullOrder, OrderClause, OrderTarget, SortDirection};
34pub use values::{
35 ConflictTarget, CreateModelInput, FilterValue, IntoSqlValue, ModelPrimaryKey, Projection,
36 RelationInclude, SqlColumnValue, SqlValue, UpdateModelInput, UpsertModelInput,
37 find_duplicate_sql_value,
38};