use use_database::{
ColumnName, DatabaseName, ForeignKey, KeyColumn, PageRequest, PrimaryKey, SchemaName,
SortDirection, TransactionIsolation, prelude::*,
};
#[test]
fn facade_root_reexports_common_database_workflow() -> Result<(), Box<dyn std::error::Error>> {
let database = DatabaseName::new("app")?;
let schema = SchemaName::new("public")?;
let table = TableName::new("users")?;
let column = ColumnName::new("id")?;
let primary_key = PrimaryKey::new(table.clone(), column.clone());
let foreign_key = ForeignKey::from_columns(
TableName::new("posts")?,
ColumnName::new("user_id")?,
table.clone(),
column.clone(),
);
let page = PageRequest::new(1, 50);
let isolation = TransactionIsolation::Serializable;
assert_eq!(database.as_str(), "app");
assert_eq!(schema.as_str(), "public");
assert_eq!(primary_key.table(), &table);
assert_eq!(foreign_key.target().column(), &column);
assert_eq!(page.per_page(), 50);
assert_eq!(SortDirection::Ascending.as_str(), "ascending");
assert_eq!(isolation.as_str(), "serializable");
Ok(())
}
#[test]
fn facade_namespaces_and_prelude_are_available() -> Result<(), Box<dyn std::error::Error>> {
let table = use_database::name::TableName::new("users")?;
let column = use_database::name::ColumnName::new("id")?;
let key_column = KeyColumn::new(column.clone()).with_table(table.clone());
let prelude_table: TableName = table;
assert_eq!(use_database::query::PageRequest::new(2, 25).page(), 2);
assert_eq!(key_column.table().expect("table"), &prelude_table);
assert_eq!(column.as_str(), "id");
Ok(())
}