Skip to main content

Crate rdbi

Crate rdbi 

Source
Expand description

rdbi - Rust Database Interface

A database abstraction layer built on mysql_async with derive macros for mapping between Rust structs and database rows.

§Features

  • Clean Query API: Fluent query builder with .bind() chaining
  • Derive Macros: #[derive(FromRow, ToParams)] for automatic mapping
  • Batch Operations: Clean BatchInsert API for bulk inserts
  • Type Safety: Strong typing with Value enum for all database types

§Example

use rdbi::{Pool, Query, FromRow, ToParams};

#[derive(FromRow, ToParams)]
pub struct User {
    #[rdbi(skip_insert)]
    pub id: i64,
    pub username: String,
    pub email: String,
}

async fn find_user(pool: &impl Pool, id: i64) -> rdbi::Result<Option<User>> {
    Query::new("SELECT * FROM users WHERE id = ?")
        .bind(id)
        .fetch_optional(pool)
        .await
}

Re-exports§

pub use batch::BatchInsert;
pub use error::Error;
pub use error::Result;
pub use mysql::MySqlPool;
pub use mysql::MySqlPoolBuilder;
pub use mysql::MySqlRow;
pub use mysql::MySqlTransaction;
pub use query::DynamicQuery;
pub use query::Query;
pub use traits::ExecuteResult;
pub use traits::FromRow;
pub use traits::FromValue;
pub use traits::IsolationLevel;
pub use traits::Pool;
pub use traits::Row;
pub use traits::RowExt;
pub use traits::ToParams;
pub use traits::ToValue;
pub use traits::Transaction;
pub use traits::Transactional;
pub use value::Value;

Modules§

batch
Batch insert operations for rdbi
error
Error types for rdbi
mysql
MySQL implementation for rdbi
query
Query builder for rdbi
traits
Core traits for rdbi
value
Dynamic Value type for database values

Derive Macros§

FromRow
Derive macro for mapping database rows to Rust structs.
ToParams
Derive macro for converting Rust structs to query parameters.