pub struct CreateTableStatement { /* private fields */ }Expand description
CREATE TABLE statement builder
This struct provides a fluent API for constructing CREATE TABLE queries.
§Examples
ⓘ
use reinhardt_query::prelude::*;
use reinhardt_query::types::ddl::ColumnType;
let query = Query::create_table()
.table("users")
.if_not_exists()
.col(
ColumnDef::new("id")
.column_type(ColumnType::Integer)
.primary_key(true)
.auto_increment(true)
)
.col(
ColumnDef::new("name")
.column_type(ColumnType::String(Some(100)))
.not_null(true)
);Implementations§
Source§impl CreateTableStatement
impl CreateTableStatement
Sourcepub fn take(&mut self) -> Self
pub fn take(&mut self) -> Self
Take the ownership of data in the current CreateTableStatement
Sourcepub fn table<T>(&mut self, tbl: T) -> &mut Selfwhere
T: IntoTableRef,
pub fn table<T>(&mut self, tbl: T) -> &mut Selfwhere
T: IntoTableRef,
Sourcepub fn if_not_exists(&mut self) -> &mut Self
pub fn if_not_exists(&mut self) -> &mut Self
Sourcepub fn cols<I>(&mut self, columns: I) -> &mut Selfwhere
I: IntoIterator<Item = ColumnDef>,
pub fn cols<I>(&mut self, columns: I) -> &mut Selfwhere
I: IntoIterator<Item = ColumnDef>,
Add multiple column definitions
§Examples
ⓘ
use reinhardt_query::prelude::*;
use reinhardt_query::types::ddl::{ColumnDef, ColumnType};
let query = Query::create_table()
.table("users")
.cols(vec![
ColumnDef::new("id").column_type(ColumnType::Integer),
ColumnDef::new("name").column_type(ColumnType::String(Some(100))),
]);Sourcepub fn constraint(&mut self, constraint: TableConstraint) -> &mut Self
pub fn constraint(&mut self, constraint: TableConstraint) -> &mut Self
Sourcepub fn constraints<I>(&mut self, constraints: I) -> &mut Selfwhere
I: IntoIterator<Item = TableConstraint>,
pub fn constraints<I>(&mut self, constraints: I) -> &mut Selfwhere
I: IntoIterator<Item = TableConstraint>,
Add multiple table constraints
§Examples
ⓘ
use reinhardt_query::prelude::*;
use reinhardt_query::types::ddl::TableConstraint;
let query = Query::create_table()
.table("order_items")
.constraints(vec![
TableConstraint::PrimaryKey {
name: None,
columns: vec!["order_id".into(), "item_id".into()],
},
TableConstraint::ForeignKey {
name: Some("fk_order".into()),
columns: vec!["order_id".into()],
ref_table: Box::new("orders".into()),
ref_columns: vec!["id".into()],
on_delete: None,
on_update: None,
},
]);Sourcepub fn indexes<I>(&mut self, indexes: I) -> &mut Selfwhere
I: IntoIterator<Item = IndexDef>,
pub fn indexes<I>(&mut self, indexes: I) -> &mut Selfwhere
I: IntoIterator<Item = IndexDef>,
Add multiple index definitions
Sourcepub fn primary_key<I, C>(&mut self, columns: I) -> &mut Selfwhere
I: IntoIterator<Item = C>,
C: IntoIden,
pub fn primary_key<I, C>(&mut self, columns: I) -> &mut Selfwhere
I: IntoIterator<Item = C>,
C: IntoIden,
Sourcepub fn unique<I, C>(&mut self, columns: I) -> &mut Selfwhere
I: IntoIterator<Item = C>,
C: IntoIden,
pub fn unique<I, C>(&mut self, columns: I) -> &mut Selfwhere
I: IntoIterator<Item = C>,
C: IntoIden,
Sourcepub fn foreign_key<I1, C1, T, I2, C2>(
&mut self,
columns: I1,
ref_table: T,
ref_columns: I2,
on_delete: Option<ForeignKeyAction>,
on_update: Option<ForeignKeyAction>,
) -> &mut Selfwhere
I1: IntoIterator<Item = C1>,
C1: IntoIden,
T: IntoTableRef,
I2: IntoIterator<Item = C2>,
C2: IntoIden,
pub fn foreign_key<I1, C1, T, I2, C2>(
&mut self,
columns: I1,
ref_table: T,
ref_columns: I2,
on_delete: Option<ForeignKeyAction>,
on_update: Option<ForeignKeyAction>,
) -> &mut Selfwhere
I1: IntoIterator<Item = C1>,
C1: IntoIden,
T: IntoTableRef,
I2: IntoIterator<Item = C2>,
C2: IntoIden,
Add a foreign key constraint
This is a convenience method for adding a FOREIGN KEY constraint.
§Examples
ⓘ
use reinhardt_query::prelude::*;
use reinhardt_query::types::ddl::ForeignKeyAction;
let query = Query::create_table()
.table("posts")
.foreign_key(
vec!["user_id"],
"users",
vec!["id"],
Some(ForeignKeyAction::Cascade),
None,
);Sourcepub fn foreign_key_from_builder(
&mut self,
fk: &mut ForeignKeyCreateStatement,
) -> &mut Self
pub fn foreign_key_from_builder( &mut self, fk: &mut ForeignKeyCreateStatement, ) -> &mut Self
Add a foreign key constraint from a [ForeignKeyCreateStatement] builder.
This method accepts the builder-pattern style used by
ForeignKey::create().
§Examples
ⓘ
use reinhardt_query::prelude::*;
let mut fk = ForeignKey::create();
fk.from_tbl(Alias::new("posts"))
.from_col(Alias::new("user_id"))
.to_tbl(Alias::new("users"))
.to_col(Alias::new("id"));
let mut stmt = Query::create_table();
stmt.table("posts")
.foreign_key_from_builder(&mut fk);Trait Implementations§
Source§impl Clone for CreateTableStatement
impl Clone for CreateTableStatement
Source§fn clone(&self) -> CreateTableStatement
fn clone(&self) -> CreateTableStatement
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CreateTableStatement
impl Debug for CreateTableStatement
Source§impl Default for CreateTableStatement
impl Default for CreateTableStatement
Source§impl QueryStatementBuilder for CreateTableStatement
impl QueryStatementBuilder for CreateTableStatement
Source§fn build_any(&self, query_builder: &dyn QueryBuilderTrait) -> (String, Values)
fn build_any(&self, query_builder: &dyn QueryBuilderTrait) -> (String, Values)
Build SQL statement for a database backend and collect query parameters Read more
impl QueryStatementWriter for CreateTableStatement
Auto Trait Implementations§
impl Freeze for CreateTableStatement
impl !RefUnwindSafe for CreateTableStatement
impl !Send for CreateTableStatement
impl !Sync for CreateTableStatement
impl Unpin for CreateTableStatement
impl UnsafeUnpin for CreateTableStatement
impl !UnwindSafe for CreateTableStatement
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
Mutably borrows from an owned value. Read more