pub struct TableSql<'a> {
pub table: &'a Table,
pub columns: &'a [Column],
pub primary_key: Option<&'a PrimaryKey>,
pub foreign_keys: &'a [ForeignKey],
pub unique_constraints: &'a [UniqueConstraint],
pub check_constraints: &'a [CheckConstraint],
}Expand description
A table and the entities that belong to it, for rendering
CREATE TABLE.
Start with TableSql::new and add the rest with the builder methods.
§Examples
use drizzle_types::sqlite::ddl::{ColumnDef, TableDef, TableSql};
let table = TableDef::new("users").strict().into_table();
let columns = [
ColumnDef::new("users", "id", "INTEGER").primary_key().into_column(),
ColumnDef::new("users", "name", "TEXT").not_null().into_column(),
];
let sql = TableSql::new(&table).columns(&columns).create_table_sql();
assert_eq!(
sql,
"CREATE TABLE `users` (\n\t`id` INTEGER PRIMARY KEY,\n\t`name` TEXT NOT NULL\n) STRICT;"
);Fields§
§table: &'a TableThe table.
columns: &'a [Column]Its columns, in order.
primary_key: Option<&'a PrimaryKey>Its primary key entity, if any.
foreign_keys: &'a [ForeignKey]Its foreign keys.
unique_constraints: &'a [UniqueConstraint]Its unique constraints.
check_constraints: &'a [CheckConstraint]Its check constraints.
Implementations§
Source§impl<'a> TableSql<'a>
impl<'a> TableSql<'a>
Sourcepub const fn new(table: &'a Table) -> Self
pub const fn new(table: &'a Table) -> Self
Starts with just the table: no columns or constraints.
Sourcepub const fn primary_key(self, pk: Option<&'a PrimaryKey>) -> Self
pub const fn primary_key(self, pk: Option<&'a PrimaryKey>) -> Self
Sets the primary key entity.
Sourcepub const fn foreign_keys(self, fks: &'a [ForeignKey]) -> Self
pub const fn foreign_keys(self, fks: &'a [ForeignKey]) -> Self
Sets the foreign keys.
Sourcepub const fn unique_constraints(self, uniques: &'a [UniqueConstraint]) -> Self
pub const fn unique_constraints(self, uniques: &'a [UniqueConstraint]) -> Self
Sets the unique constraints.
Sourcepub const fn check_constraints(self, checks: &'a [CheckConstraint]) -> Self
pub const fn check_constraints(self, checks: &'a [CheckConstraint]) -> Self
Sets the check constraints.
Sourcepub fn create_table_sql(&self) -> String
pub fn create_table_sql(&self) -> String
Renders the CREATE TABLE statement, ending in ;.
A single-column primary key or unique constraint without an explicit
name is written inline on the column; composite or named ones become
table constraints. Columns flagged primary_key but not covered by
the primary key entity also get a primary key. WITHOUT ROWID and
STRICT are appended from the table.
Sourcepub fn drop_table_sql(&self) -> String
pub fn drop_table_sql(&self) -> String
Renders DROP TABLE for the table.