Skip to main content

LogicalModel

Struct LogicalModel 

Source
pub struct LogicalModel {
    pub name: String,
    pub tables: IndexMap<TableId, Table>,
    /* private fields */
}
Expand description

The full logical (relational) model.

Fields§

§name: String

Database / schema name.

§tables: IndexMap<TableId, Table>

Tables, keyed for O(1) lookup; iteration order is insertion order.

Implementations§

Source§

impl LogicalModel

Source

pub fn new(name: impl Into<String>) -> Self

Construct a new empty logical model.

Source

pub fn add_table(&mut self, name: impl Into<String>) -> TableId

Create a new empty table.

Source

pub fn table(&self, id: TableId) -> Result<&Table>

Borrow a table by handle.

Source

pub fn table_mut(&mut self, id: TableId) -> Result<&mut Table>

Mutably borrow a table by handle.

Source

pub fn add_column( &mut self, table: TableId, name: impl Into<String>, data_type: DataType, ) -> Result<ColumnId>

Append a new column to table.

Source

pub fn set_primary_key( &mut self, table: TableId, columns: Vec<ColumnId>, ) -> Result<ConstraintId>

Add (or replace) a primary-key constraint on table.

Source

pub fn add_foreign_key( &mut self, table: TableId, fk: ForeignKey, ) -> Result<ConstraintId>

Add a foreign-key constraint on table.

Source

pub fn add_unique( &mut self, table: TableId, columns: Vec<ColumnId>, ) -> Result<ConstraintId>

Add a UNIQUE constraint over the given columns.

Source§

impl LogicalModel

Source

pub fn to_sql(&self, dialect: SqlDialect) -> String

Render this logical model as a SQL DDL script for the given dialect.

Tables are emitted in author order, with primary keys inline and foreign keys deferred to ALTER TABLE statements at the bottom of the script (so that forward references between tables resolve cleanly).

Trait Implementations§

Source§

impl Clone for LogicalModel

Source§

fn clone(&self) -> LogicalModel

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 LogicalModel

Source§

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

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

impl Default for LogicalModel

Source§

fn default() -> LogicalModel

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for LogicalModel

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 LogicalModel

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, 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> 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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,