aro-fletch 1.0.0

Fletch ORM persistence adapter for the Aro web framework
Documentation
//! Fletch persistence adapter for the Aro web framework.
//!
//! This crate implements the persistence ports defined in `aro-core`
//! using fletch (SQLx-based) as the underlying database layer.
//!
//! Commonly needed fletch types are re-exported so downstream crates
//! do not need `fletch` as a direct dependency for basic use.
//!
//! # Multi-database support
//!
//! Enable a database backend via Cargo features (`sqlite`, `postgres`, `mysql`).
//! Types are generic over [`sqlx::Database`]; pass the backend type to
//! [`AppDatabaseExt::database`] and construct [`FletchRepository`] from a
//! matching [`fletch_orm::Pool`].
//!
//! # Transaction-scoped repositories
//!
//! Use [`FletchTransactionManager::transaction`] with a
//! [`FletchTransactionContext`] to obtain [`FletchTransactionalRepository`]
//! instances whose writes participate in the open transaction.

pub mod database;
pub mod error;
mod health;
#[cfg(feature = "query-adapters")]
pub mod query;
pub mod repo;
pub mod transaction;

pub use database::AppDatabaseExt;
#[cfg(feature = "query-adapters")]
pub use query::EntityQuery;
pub use repo::{FletchDatabase, FletchEntity, FletchRepository, FletchTransactionalRepository};
pub use transaction::{FletchTransactionContext, FletchTransactionManager};

// Re-export query/pagination ports from aro-core.
pub use aro_core::pagination::{Page, PageRequest};
pub use aro_core::repository::Repository;
#[cfg(feature = "query-adapters")]
pub use aro_core::repository::{Paginatable, Queryable};

/// Convenience re-exports for typical fletch-backed persistence development.
pub mod prelude {
    pub use aro_core::entity::Entity;
    pub use aro_core::error::RepoError;
    pub use aro_core::pagination::{Page, PageRequest};
    pub use aro_core::repository::Repository;
    pub use aro_core::repository::TransactionManager;
    #[cfg(feature = "query-adapters")]
    pub use aro_core::repository::{Paginatable, Queryable};

    pub use crate::AppDatabaseExt;
    #[cfg(feature = "query-adapters")]
    pub use crate::EntityQuery;
    pub use crate::FletchRepository;
    pub use crate::FletchTransactionContext;
    pub use crate::FletchTransactionManager;
    pub use crate::Pool;
    pub use crate::PoolBuilder;
    pub use crate::PoolConfig;
    pub use crate::Value;
    pub use fletch_orm::{Filter, Op, Order};
}

/// Re-export the `fletch` crate for advanced usage.
pub use fletch_orm;

// Re-export commonly needed fletch types at the crate root.
pub use fletch_orm::Column;
pub use fletch_orm::ColumnType;
pub use fletch_orm::Entity;
pub use fletch_orm::FletchError;
pub use fletch_orm::FromRow;
pub use fletch_orm::Pool;
pub use fletch_orm::PoolBuilder;
pub use fletch_orm::PoolConfig;
pub use fletch_orm::Transaction;
pub use fletch_orm::Value;