Skip to content

RustUse/use-database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

use-database

use-database is the RustUse facade/set for primitive database vocabulary. RustUse is a collection of composable, dependency-light Rust utility crates, and this workspace provides shared database concepts that can be reused by SQL, NoSQL, Postgres, SQLite, MySQL, document database, key-value database, graph database, search database, and other database-specific sets.

This repository is experimental while it is below 0.3.0. APIs are intentionally small and may change as the RustUse database vocabulary settles.

Purpose

use-database is the common database vocabulary layer. It provides metadata and labels for schemas, tables, rows, columns, keys, indexes, constraints, relations, queries, result sets, transactions, migrations, drivers, database URLs, and database identifiers.

What It Is

  • Engine-neutral database primitive types.
  • Focused child crates with small public APIs.
  • A facade crate that re-exports common child crate types.
  • Metadata and vocabulary useful across relational and non-relational systems.

What It Is Not

  • Not an ORM.
  • Not a database client.
  • Not a query executor.
  • Not a migration runner.
  • Not a SQL parser or query builder.
  • Not an engine-specific crate.

Crates

Crate Description
use-db-core Shared database enums and marker types.
use-db-name Strongly typed database identifier/name wrappers.
use-db-url Database URL and DSN metadata primitives.
use-db-schema Schema metadata primitives.
use-db-table Table metadata primitives.
use-db-column Column metadata primitives.
use-db-row Row counters and status primitives.
use-db-record Record/document/entity primitives.
use-db-key Key metadata primitives.
use-db-index Index metadata primitives.
use-db-constraint Constraint metadata primitives.
use-db-relation Relation and cardinality primitives.
use-db-query Query metadata vocabulary.
use-db-result Result set, page, and cursor primitives.
use-db-transaction Transaction metadata primitives.
use-db-migration Migration metadata primitives.
use-db-driver Driver/backend metadata primitives.
use-database Feature-gated facade crate.

Installation

[dependencies]
use-database = "0.1.0"

Focused crates can also be used directly:

[dependencies]
use-db-name = "0.1.0"
use-db-query = "0.1.0"

Basic Usage

use use_database::{
    ColumnName, DatabaseName, PageRequest, PrimaryKey, SchemaName, SortDirection, TableName,
    TransactionIsolation,
};

fn main() -> 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 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!(page.per_page(), 50);
    assert_eq!(SortDirection::Ascending.as_str(), "ascending");
    assert_eq!(isolation.as_str(), "serializable");

    Ok(())
}

Relationship To Other RustUse Database Sets

use-database should hold common database vocabulary only. Database-specific sets may depend on it, but it should not depend on database-specific sets.

  • use-sql should contain SQL-specific syntax, clauses, statements, dialect labels, and relational query concepts.
  • use-nosql should contain non-relational database category primitives.
  • use-postgres, use-sqlite, use-mysql, and similar sets should contain engine-specific primitives.

Engine-specific behavior, query execution, network connections, migrations, and SQL parsing belong outside use-database.

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors