use-sql 0.1.0

Feature-gated facade crate for RustUse SQL primitives
Documentation
use use_sql::{
    clause, column, constraint, dialect, expression, ident, keyword, operator, param, query,
    schema, table, ty, value,
};

#[test]
fn facade_aliases_are_available() -> Result<(), Box<dyn std::error::Error>> {
    let identifier = ident::SqlIdentifier::new("users")?;
    assert_eq!(identifier.as_str(), "users");
    assert!(keyword::is_common_keyword("select"));
    assert_eq!(
        "postgres".parse::<dialect::SqlDialect>()?,
        dialect::SqlDialect::PostgreSql
    );
    assert_eq!(
        "varchar".parse::<ty::SqlScalarType>()?,
        ty::SqlScalarType::Text
    );
    assert_eq!(value::SqlValue::string("Ada").to_string(), "'Ada'");
    assert_eq!("$1".parse::<param::SqlParameter>()?.to_string(), "$1");

    let schema_name = schema::SqlSchemaName::new("public")?;
    let table_name = table::SqlTableName::new("users")?;
    let table_ref = table::SqlTableRef::new(table_name.clone()).with_schema(schema_name);
    let column_ref = column::SqlColumnRef::qualified(table_name, column::SqlColumnName::new("id")?);

    assert_eq!(table_ref.to_string(), "public.users");
    assert_eq!(column_ref.to_string(), "users.id");
    assert_eq!(
        "is not null".parse::<operator::SqlOperator>()?.to_string(),
        "IS NOT NULL"
    );
    assert_eq!(
        expression::SqlExpression::column(column_ref).to_string(),
        "users.id"
    );
    assert!(clause::SqlClauseKind::Where.comes_after(clause::SqlClauseKind::From));
    assert!(query::SqlQueryKind::Drop.is_destructive());
    assert_eq!(constraint::SqlConstraintKind::Unique.to_string(), "UNIQUE");

    Ok(())
}