Struct geekorm::QueryBuilder
source · pub struct QueryBuilder { /* private fields */ }Expand description
The QueryBuilder is how you can build dynamically queries using the builder pattern.
§Features
There is a number a features that are supported by the QueryBuilder:
- All Major Query Types
- Select: Build a select query
- Insert: Build an insert query
- Update: Build an update query
- Delete: Build a delete query
- Conditions: Build a query with conditions
- Where: Build a query with where conditions
- Order By: Build a query with order by conditions
- Limit: Build a query with a limit
- Joins: Build a query with joins 2 tables
- Only Inner Joins are supported currently
§Example
use geekorm::{QueryOrder, PrimaryKeyInteger};
use geekorm::prelude::*;
#[derive(Table, Debug, Default, Clone)]
pub struct Users {
pub id: PrimaryKeyInteger,
pub username: String,
pub age: i32,
pub postcode: Option<String>,
}
// Build a query to create a new table
let create_query = Users::query_create().build()
.expect("Failed to build create query");
println!("Create Query :: {}", create_query);
// Build a query to select rows from the table
let select_query = Users::query_select()
.where_eq("username", "geekmasher")
.order_by("age", QueryOrder::Asc)
.build()
.expect("Failed to build select query");
println!("Select Query :: {}", select_query);
// Output:
// SELECT (...) FROM User WHERE username = ? ORDER BY age ASC;Implementations§
source§impl QueryBuilder
impl QueryBuilder
sourcepub fn new() -> QueryBuilder
pub fn new() -> QueryBuilder
Create a new QueryBuilder
sourcepub fn select() -> QueryBuilder
pub fn select() -> QueryBuilder
Build a select query
sourcepub fn create() -> QueryBuilder
pub fn create() -> QueryBuilder
Build a create query
sourcepub fn insert() -> QueryBuilder
pub fn insert() -> QueryBuilder
Build an insert query
sourcepub fn update() -> QueryBuilder
pub fn update() -> QueryBuilder
Build an update query
sourcepub fn table(self, table: Table) -> QueryBuilder
pub fn table(self, table: Table) -> QueryBuilder
Set the table for the query builder
sourcepub fn columns(self, columns: Vec<&str>) -> QueryBuilder
pub fn columns(self, columns: Vec<&str>) -> QueryBuilder
Set the columns for the query builder
sourcepub fn add_value(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn add_value(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Add a value to the list of values for parameterized queries
sourcepub fn and(self) -> QueryBuilder
pub fn and(self) -> QueryBuilder
Add an AND condition to the where clause
sourcepub fn or(self) -> QueryBuilder
pub fn or(self) -> QueryBuilder
Add an OR condition to the where clause
sourcepub fn where_eq(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn where_eq(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Where clause for equals
sourcepub fn where_ne(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn where_ne(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Where clause for not equals
sourcepub fn where_like(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn where_like(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Where clause for like
sourcepub fn where_gt(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn where_gt(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Where clause for greater than
sourcepub fn where_lt(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn where_lt(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Where clause for less than
sourcepub fn where_gte(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn where_gte(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Where clause for greater than or equal to
sourcepub fn where_lte(self, column: &str, value: impl Into<Value>) -> QueryBuilder
pub fn where_lte(self, column: &str, value: impl Into<Value>) -> QueryBuilder
Where clause for less than or equal to
sourcepub fn order_by(self, column: &str, order: QueryOrder) -> QueryBuilder
pub fn order_by(self, column: &str, order: QueryOrder) -> QueryBuilder
Order the query by a particular column
sourcepub fn join(self, table: Table) -> QueryBuilder
pub fn join(self, table: Table) -> QueryBuilder
Adds a table to join with the current table
Note: GeekOrm only joins tables with the INNER JOIN clause and primary keys
sourcepub fn count(self) -> QueryBuilder
pub fn count(self) -> QueryBuilder
Count the number of rows in the query
sourcepub fn limit(self, limit: usize) -> QueryBuilder
pub fn limit(self, limit: usize) -> QueryBuilder
Add a limit to the query
sourcepub fn offset(self, offset: usize) -> QueryBuilder
pub fn offset(self, offset: usize) -> QueryBuilder
Add an offset to the query
Trait Implementations§
source§impl Clone for QueryBuilder
impl Clone for QueryBuilder
source§fn clone(&self) -> QueryBuilder
fn clone(&self) -> QueryBuilder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for QueryBuilder
impl Debug for QueryBuilder
source§impl Default for QueryBuilder
impl Default for QueryBuilder
source§fn default() -> QueryBuilder
fn default() -> QueryBuilder
Auto Trait Implementations§
impl Freeze for QueryBuilder
impl RefUnwindSafe for QueryBuilder
impl Send for QueryBuilder
impl Sync for QueryBuilder
impl Unpin for QueryBuilder
impl UnwindSafe for QueryBuilder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)