use-postgres 0.1.0

Feature-gated facade crate for RustUse PostgreSQL primitives
Documentation
use use_postgres::{
    column, constraint, enumeration, extension, identifier, index, schema, table, ty,
};

#[test]
fn facade_reexports_postgres_primitives() -> Result<(), Box<dyn std::error::Error>> {
    let qualified = identifier::PgQualifiedName::parse("public.users")?;
    let table_ref = table::PgTableRef::qualified(
        schema::PgSchemaName::public(),
        table::PgTableName::new("users")?,
    );
    let id = column::PgColumn::with_built_in_type(
        column::PgColumnName::new("id")?,
        ty::PgBuiltInType::BigInt,
    )
    .with_nullability(column::PgNullability::NotNull);
    let constraint = constraint::PgConstraint::new(constraint::PgConstraintKind::PrimaryKey)
        .with_columns(vec![column::PgColumnName::new("id")?]);
    let index = index::PgIndex::new(index::PgIndexName::new("users_id_idx")?)
        .with_method(index::PgIndexMethod::Btree)
        .with_columns(vec![index::PgIndexColumn::new("id")?]);
    let enum_type = enumeration::PgEnumType::new(enumeration::PgEnumName::new("user_status")?)
        .with_variants(vec![enumeration::PgEnumVariant::new("active")?])?;
    let extension = extension::PgExtension::new(extension::PgExtensionName::pgcrypto());

    assert_eq!(qualified.to_string(), "public.users");
    assert_eq!(table_ref.to_string(), "public.users");
    assert_eq!(id.type_name().as_str(), "bigint");
    assert_eq!(constraint.kind(), constraint::PgConstraintKind::PrimaryKey);
    assert_eq!(index.method(), index::PgIndexMethod::Btree);
    assert_eq!(enum_type.variants().len(), 1);
    assert_eq!(extension.name().as_str(), "pgcrypto");
    Ok(())
}