Expand description
Query building and execution for libsql-orm
This module provides a fluent query builder for constructing complex SQL queries with type safety and parameter binding. It supports SELECT, INSERT, UPDATE, DELETE operations with joins, filtering, sorting, grouping, and aggregation.
§Basic Usage
use libsql_orm::{QueryBuilder, FilterOperator, Sort, SortOrder};
let query = QueryBuilder::new("users")
.select(vec!["id", "name", "email"])
.r#where(FilterOperator::Eq("is_active".to_string(), Value::Boolean(true)))
.order_by(Sort::new("name", SortOrder::Asc))
.limit(10);
let (sql, params) = query.build()?;
§Complex Queries
use libsql_orm::{QueryBuilder, JoinType, FilterOperator, Aggregate};
let complex_query = QueryBuilder::new("orders")
.select(vec!["orders.id", "users.name", "products.title"])
.join(JoinType::Inner, "users", "users.id = orders.user_id")
.join(JoinType::Inner, "products", "products.id = orders.product_id")
.r#where(FilterOperator::Gte("orders.created_at".to_string(), Value::Text("2024-01-01".to_string())))
.group_by(vec!["users.id"])
.aggregate(Aggregate::Count, "orders.id", Some("order_count"))
.order_by(Sort::desc("order_count"));
let results = complex_query.execute::<OrderWithUser>(&db).await?;
Structs§
- Query
Builder - SQL query builder for complex queries
- Query
Result - Query result wrapper