Skip to main content

Crate modo_db

Crate modo_db 

Source
Expand description

Database integration for the modo framework.

Provides SeaORM-backed connection pooling, schema synchronisation, versioned migrations, pagination helpers, and a compile-time entity/migration registration system built on inventory.

§Features

  • sqlite (default) — enables SQLite support via sqlx-sqlite.
  • postgres — enables PostgreSQL support via sqlx-postgres.

§Quick start

#[modo_db::entity(table = "todos")]
#[entity(timestamps)]
pub struct Todo {
    #[entity(primary_key, auto = "ulid")]
    pub id: String,
    pub title: String,
}

#[modo::main]
async fn main(
    app: modo::app::AppBuilder,
    config: Config,
) -> Result<(), Box<dyn std::error::Error>> {
    let db = modo_db::connect(&config.database).await?;
    modo_db::sync_and_migrate(&db).await?;
    app.config(config.core).managed_service(db).run().await
}

Re-exports§

pub use config::DatabaseConfig;
pub use connect::connect;
pub use entity::EntityRegistration;
pub use extractor::Db;
pub use id::generate_nanoid;
pub use id::generate_ulid;
pub use migration::MigrationRegistration;
pub use pagination::CursorParams;
pub use pagination::CursorResult;
pub use pagination::PageParams;
pub use pagination::PageResult;
pub use pagination::paginate;
pub use pagination::paginate_cursor;
pub use pool::DbPool;
pub use sync::sync_and_migrate;
pub use async_trait;
pub use chrono;
pub use inventory;
pub use sea_orm;

Modules§

config
connect
entity
extractor
id
migration
pagination
pool
sync

Attribute Macros§

entity
Attribute macro for declaring a SeaORM database entity with auto-registration.
migration
Attribute macro for registering an escape-hatch SQL migration function.