Struct ChainBuilder

Source
pub struct ChainBuilder { /* private fields */ }
Expand description

Main query builder for constructing SQL queries

This is the primary interface for building SQL queries with a fluent API. It supports all major SQL operations including SELECT, INSERT, UPDATE, DELETE, as well as complex features like JOINs, CTEs, and subqueries.

Implementations§

Source§

impl ChainBuilder

Source

pub fn new(client: Client) -> ChainBuilder

Create a new ChainBuilder with the specified client

Source

pub fn new_mysql() -> ChainBuilder

Create a new ChainBuilder for MySQL

Source

pub fn db(&mut self, db: &str) -> &mut ChainBuilder

Set the database name

Source

pub fn table(&mut self, table: &str) -> &mut ChainBuilder

Set the table name

Source

pub fn table_raw( &mut self, table: &str, val: Option<Vec<Value>>, ) -> &mut ChainBuilder

Set a raw table expression

Source

pub fn distinct(&mut self) -> &mut ChainBuilder

Enable DISTINCT

Source

pub fn select(&mut self, select: Select) -> &mut ChainBuilder

Add a SELECT clause

Source

pub fn select_raw( &mut self, sql: &str, binds: Option<Vec<Value>>, ) -> &mut ChainBuilder

Add a raw SELECT expression

Source

pub fn select_distinct(&mut self, columns: Vec<String>) -> &mut ChainBuilder

Add DISTINCT SELECT

Source

pub fn select_count(&mut self, column: &str) -> &mut ChainBuilder

Add COUNT aggregate function

Source

pub fn select_sum(&mut self, column: &str) -> &mut ChainBuilder

Add SUM aggregate function

Source

pub fn select_avg(&mut self, column: &str) -> &mut ChainBuilder

Add AVG aggregate function

Source

pub fn select_max(&mut self, column: &str) -> &mut ChainBuilder

Add MAX aggregate function

Source

pub fn select_min(&mut self, column: &str) -> &mut ChainBuilder

Add MIN aggregate function

Source

pub fn select_alias(&mut self, column: &str, alias: &str) -> &mut ChainBuilder

Add SELECT with alias

Source

pub fn insert(&mut self, data: Value) -> &mut ChainBuilder

Set INSERT data

Source

pub fn insert_many(&mut self, data: Vec<Value>) -> &mut ChainBuilder

Set INSERT multiple rows data

Source

pub fn update(&mut self, data: Value) -> &mut ChainBuilder

Set UPDATE data

Source

pub fn insert_ignore(&mut self, data: Value) -> &mut ChainBuilder

Add INSERT IGNORE (MySQL)

Source

pub fn insert_or_update( &mut self, data: Value, _update_data: Value, ) -> &mut ChainBuilder

Add UPSERT (INSERT … ON DUPLICATE KEY UPDATE)

Source

pub fn update_raw( &mut self, _sql: &str, _binds: Option<Vec<Value>>, ) -> &mut ChainBuilder

Add raw UPDATE statement

Source

pub fn increment(&mut self, column: &str, amount: i64) -> &mut ChainBuilder

Increment a column value

Source

pub fn decrement(&mut self, column: &str, amount: i64) -> &mut ChainBuilder

Decrement a column value

Source

pub fn delete(&mut self) -> &mut ChainBuilder

Set DELETE operation

Source

pub fn as_name(&mut self, name: &str) -> &mut ChainBuilder

Set table alias

Source

pub fn with( &mut self, alias: &str, chain_builder: ChainBuilder, ) -> &mut ChainBuilder

Add a WITH clause (CTE)

Source

pub fn with_recursive( &mut self, alias: &str, chain_builder: ChainBuilder, ) -> &mut ChainBuilder

Add a recursive WITH clause (CTE)

Source

pub fn union(&mut self, chain_builder: ChainBuilder) -> &mut ChainBuilder

Add a UNION clause

Source

pub fn union_all(&mut self, chain_builder: ChainBuilder) -> &mut ChainBuilder

Add a UNION ALL clause

Source

pub fn query(&mut self, query: impl FnOnce(&mut QueryBuilder))

Configure query parts (WHERE, JOIN, etc.)

Source

pub fn add_raw(&mut self, sql: &str, val: Option<Vec<Value>>)

Add raw SQL

Source

pub fn to_sql(&mut self) -> (String, Vec<Value>)

Generate SQL string and bind parameters

Source§

impl ChainBuilder

Source

pub fn to_sqlx_query(&mut self) -> Query<'_, MySql, MySqlArguments>

Source

pub fn to_sqlx_query_as<T>(&mut self) -> QueryAs<'_, MySql, T, MySqlArguments>
where T: for<'r> FromRow<'r, MySqlRow>,

Source

pub async fn count( &mut self, column: &str, pool: &Pool<MySql>, ) -> Result<i64, Error>

Trait Implementations§

Source§

impl Clone for ChainBuilder

Source§

fn clone(&self) -> ChainBuilder

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ChainBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ChainBuilder

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for ChainBuilder

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,