Expand description
Fluent query builder for constructing SQL queries.
Provides the QueryBuilder struct with chainable methods for building
SELECT, INSERT, and filtered queries with type-safe parameter binding.
§Query Builder Module
This module provides a fluent interface for constructing and executing SQL queries. It handles SELECT, INSERT, filtering (WHERE), pagination (LIMIT/OFFSET), and ordering operations with type-safe parameter binding across different database drivers.
§Features
- Fluent API: Chainable methods for building complex queries
- Type-Safe Binding: Automatic parameter binding with support for multiple types
- Multi-Driver Support: Works with PostgreSQL, MySQL, and SQLite
- UUID Support: Full support for UUID versions 1-7
- Pagination: Built-in LIMIT/OFFSET support with helper methods
- Custom Filters: Support for manual SQL construction with closures
§Example Usage
ⓘ
use bottle_orm::{Database, Model};
use uuid::Uuid;
// Simple query
let users: Vec<User> = db.model::<User>()
.filter("age", ">=", 18)
.order("created_at DESC")
.limit(10)
.scan()
.await?;
// Query with UUID filter
let user_id = Uuid::new_v4();
let user: User = db.model::<User>()
.filter("id", "=", user_id)
.first()
.await?;
// Insert a new record
let new_user = User {
id: Uuid::new_v7(uuid::Timestamp::now(uuid::NoContext)),
username: "john_doe".to_string(),
age: 25,
};
db.model::<User>().insert(&new_user).await?;Structs§
- Query
Builder - A fluent Query Builder for constructing SQL queries.
Type Aliases§
- Filter
Fn - A type alias for filter closures that support manual SQL construction and argument binding.