use crate::alloc_prelude::*;
mod check_constraint;
mod column;
mod foreign_key;
mod index;
mod primary_key;
pub mod sql;
mod table;
mod unique_constraint;
mod view;
pub use check_constraint::CheckConstraintDef;
pub use column::{ColumnDef, GeneratedDef, GeneratedType};
pub use foreign_key::{ForeignKeyDef, ReferentialAction};
pub use index::{IndexColumn, IndexColumnDef, IndexDef, IndexOrigin};
pub use primary_key::PrimaryKeyDef;
pub use table::TableDef;
pub use unique_constraint::UniqueConstraintDef;
pub use view::ViewDef;
pub use check_constraint::CheckConstraint;
pub use column::{Column, Generated};
pub use foreign_key::ForeignKey;
pub use index::Index;
pub use primary_key::PrimaryKey;
pub use table::Table;
pub use unique_constraint::UniqueConstraint;
pub use view::View;
pub use sql::TableSql;
#[cfg(feature = "serde")]
pub use crate::serde_helpers::{cow_from_string, cow_option_from_string};
pub const ENTITY_TYPE_TABLES: &str = "tables";
pub const ENTITY_TYPE_COLUMNS: &str = "columns";
pub const ENTITY_TYPE_INDEXES: &str = "indexes";
pub const ENTITY_TYPE_FKS: &str = "fks";
pub const ENTITY_TYPE_PKS: &str = "pks";
pub const ENTITY_TYPE_UNIQUES: &str = "uniques";
pub const ENTITY_TYPE_CHECKS: &str = "checks";
pub const ENTITY_TYPE_VIEWS: &str = "views";
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "entityType"))]
pub enum SqliteEntity {
#[cfg_attr(feature = "serde", serde(rename = "tables"))]
Table(Table),
#[cfg_attr(feature = "serde", serde(rename = "columns"))]
Column(Column),
#[cfg_attr(feature = "serde", serde(rename = "indexes"))]
Index(Index),
#[cfg_attr(feature = "serde", serde(rename = "fks"))]
ForeignKey(ForeignKey),
#[cfg_attr(feature = "serde", serde(rename = "pks"))]
PrimaryKey(PrimaryKey),
#[cfg_attr(feature = "serde", serde(rename = "uniques"))]
UniqueConstraint(UniqueConstraint),
#[cfg_attr(feature = "serde", serde(rename = "checks"))]
CheckConstraint(CheckConstraint),
#[cfg_attr(feature = "serde", serde(rename = "views"))]
View(View),
}
#[must_use]
pub fn name_for_fk(table: &str, columns: &[&str], table_to: &str, columns_to: &[&str]) -> String {
format!(
"fk_{}_{}_{}_{}_fk",
table,
columns.join("_"),
table_to,
columns_to.join("_")
)
}
#[must_use]
pub fn name_for_unique(table: &str, columns: &[&str]) -> String {
format!("{}_{}_unique", table, columns.join("_"))
}
#[must_use]
pub fn name_for_pk(table: &str) -> String {
format!("{table}_pk")
}
#[must_use]
pub fn name_for_index(table: &str, columns: &[&str]) -> String {
format!("{}_{}_idx", table, columns.join("_"))
}
#[must_use]
pub fn name_for_check(table: &str, index: usize) -> String {
format!("{table}_check_{index}")
}