Module query_builder

Module query_builder 

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

QueryBuilder
A fluent Query Builder for constructing SQL queries.

Type Aliases§

FilterFn
A type alias for filter closures that support manual SQL construction and argument binding.