Module query

Source
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§

QueryBuilder
SQL query builder for complex queries
QueryResult
Query result wrapper