Skip to main content

Module db

Module db 

Source
Expand description

§modo::db

Lightweight libsql (SQLite) database layer with typed row mapping, composable query building, filtering, and pagination.

Requires feature "db" (enabled by default).

§Core types

TypePurpose
DatabaseClone-able, Arc-wrapped single-connection handle
ConfigYAML-deserializable database configuration with PRAGMA defaults
ManagedDatabaseWrapper for graceful shutdown via crate::run!
managedWraps a Database into a ManagedDatabase
DatabasePoolMulti-database pool with lazy shard opening for tenant isolation
PoolConfigConfiguration for database sharding (base path, shard count)
ManagedDatabasePoolWrapper for graceful pool shutdown via crate::run!
managed_poolWraps a DatabasePool into a ManagedDatabasePool

§Connection & querying

ItemPurpose
connectOpen a database, apply PRAGMAs, optionally run migrations
migrateRun *.sql migrations from a directory with checksum tracking
ConnExtLow-level query_raw/execute_raw trait for Connection and Transaction
ConnQueryExtHigh-level query_one/query_all/query_optional helpers (blanket impl on ConnExt)
SelectBuilderComposable query builder combining filters, sorting, and pagination

§Row mapping

ItemPurpose
FromRowTrait for converting a libsql::Row into a Rust struct
FromValueTrait for converting a libsql::Value into a concrete Rust type
ColumnMapColumn name to index lookup for name-based row access

§Filtering & pagination

ItemPurpose
FilterRaw parsed filter from query string (axum extractor)
FilterSchemaDeclares allowed filter and sort fields for an endpoint
ValidatedFilterSchema-validated filter safe for SQL generation
FieldTypeColumn type enum for filter value validation
PageRequestOffset-based pagination extractor (?page=N&per_page=N)
PageOffset-based page response with total/has_next/has_prev
CursorRequestCursor-based pagination extractor (?after=<cursor>&per_page=N)
CursorPageCursor-based page response with next_cursor/has_more
PaginationConfigConfigurable defaults and limits for pagination extractors

§Configuration enums

EnumPurpose
JournalModeSQLite journal mode (WAL, Delete, Truncate, Memory, Off)
SynchronousModeSQLite synchronous mode (Off, Normal, Full, Extra)
TempStoreSQLite temp store location (Default, File, Memory)

§Re-exports

The libsql crate is re-exported for direct access to low-level types such as libsql::params!, libsql::Value, libsql::Connection, and libsql::Transaction.

§Quick start

use modo::db::{self, ConnExt, ConnQueryExt};

// Connect with defaults (data/app.db, WAL mode, FK on)
let db = db::connect(&db::Config::default()).await?;

// Use query helpers via ConnQueryExt
let user: User = db.conn().query_one(
    "SELECT id, name FROM users WHERE id = ?1",
    libsql::params!["user_abc"],
).await?;

// Or use the SelectBuilder for filtered, paginated queries
let page = db.conn()
    .select("SELECT id, name FROM users")
    .filter(validated_filter)
    .order_by("\"created_at\" DESC")
    .page::<User>(page_request)
    .await?;

Re-exports§

pub use libsql;

Structs§

ColumnMap
Column name to index lookup built from a single row’s column metadata.
Config
Database configuration with sensible defaults for SQLite/libsql.
CursorPage
Cursor-based page response.
CursorRequest
Cursor pagination request extracted from the query string.
Database
Clone-able, single-connection database handle.
DatabasePool
Multi-database connection pool with lazy shard opening.
Filter
Raw parsed filter from query string.
FilterSchema
Declares the allowed filter fields and sort fields for an endpoint.
ManagedDatabase
Wrapper for graceful shutdown integration with crate::run!.
ManagedDatabasePool
Wrapper for graceful shutdown integration with crate::run!.
Page
Offset-based page response.
PageRequest
Offset pagination request extracted from the query string.
PaginationConfig
Pagination defaults applied by PageRequest and CursorRequest extractors.
PoolConfig
Pool configuration for multi-database sharding.
SelectBuilder
Composable query builder combining filters, sorting, and pagination.
ValidatedFilter
Schema-validated filter, safe for SQL generation.

Enums§

FieldType
Column type used for validating filter values.
JournalMode
SQLite journal mode.
SynchronousMode
SQLite synchronous mode.
TempStore
SQLite temp store location.

Traits§

ConnExt
Low-level query trait implemented for libsql::Connection and libsql::Transaction.
ConnQueryExt
High-level query helpers built on ConnExt.
FromRow
Trait for converting a libsql::Row into a Rust struct.
FromValue
Converts a libsql::Value into a concrete Rust type.

Functions§

connect
Open a local libsql database, apply PRAGMAs from Config, and optionally run migrations.
managed
Wrap a Database for use with crate::run!.
managed_pool
Wrap a DatabasePool for use with crate::run!.
migrate
Run SQL migrations from a directory against a connection.