sz-orm-query-builder 5.0.0

Type-safe query builder AST with dialect-aware SQL rendering
Documentation

SZ-ORM QueryBuilder — Standalone SQL Builder (sea-query style)

A pure SQL builder that does not bind to Model, can be compiled independently and published to crates.io.

Design inspired by sea-query:

  • Decoupled from ORM: does not depend on Model trait, pure SQL construction
  • Multi-dialect support: adapts MySQL/PostgreSQL/SQLite/Oracle via [DbType]
  • Chainable API: all methods return Self
  • Zero runtime overhead: construction process requires zero database connections

Quick Start

use sz_orm_core::DbType;
use sz_orm_query_builder::{Query, SelectQuery};

// SELECT
let sql = Query::select()
    .column("id")
    .column("name")
    .from("users")
    .where_clause("age > 18")
    .order_by("id", true)
    .limit(10)
    .build(DbType::MySQL);
assert!(sql.contains("SELECT"));
assert!(sql.contains("FROM `users`"));

// INSERT
let sql = Query::insert()
    .into_table("users")
    .value("name", "'Alice'")
    .value("age", "30")
    .build();
assert!(sql.contains("INSERT INTO `users`"));

// UPDATE
let sql = Query::update()
    .table("users")
    .set("name", "'Bob'")
    .where_clause("id = 1")
    .build();
assert!(sql.contains("UPDATE `users`"));

// DELETE
let sql = Query::delete()
    .from_table("users")
    .where_clause("id = 1")
    .build();
assert!(sql.contains("DELETE FROM"));

Differences from sz-orm-core::QueryBuilder

Feature sz-orm-core::QueryBuilder<M> sz-orm-query-builder::Query
Binds Model Yes (<M: Model>) No
Type safety Compile-time table/column validation Runtime strings
Applicable scenarios Full ORM workflow Pure SQL construction, dynamic queries
Dependencies All of sz-orm-core Only dialect module
Independent publish No Yes