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 viasqlx-sqlite.postgres— enables PostgreSQL support viasqlx-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;