#![doc(html_root_url = "https://docs.rs/dbnexus/0.1")]
#![deny(missing_docs)]
#![forbid(unsafe_code)]
#![allow(dead_code)]
#[cfg(all(feature = "sqlite", feature = "postgres"))]
compile_error!("Cannot enable both 'sqlite' and 'postgres' features");
#[cfg(all(feature = "sqlite", feature = "mysql"))]
compile_error!("Cannot enable both 'sqlite' and 'mysql' features");
#[cfg(all(feature = "postgres", feature = "mysql"))]
compile_error!("Cannot enable both 'postgres' and 'mysql' features");
#[cfg(not(any(feature = "sqlite", feature = "postgres", feature = "mysql")))]
compile_error!("Must enable exactly one database feature: 'sqlite', 'postgres', or 'mysql'");
#[cfg(feature = "audit")]
pub mod audit;
#[cfg(feature = "cache")]
pub mod cache;
pub mod config;
pub use config::{DatabaseType, DbConfig, DbConfigBuilder, PoolConfig};
pub mod error;
pub use error::{
AuditError, AuditResult, ConfigError, ConfigResult, DbError, DbResult, MigrationError, MigrationResult,
PermissionError, PermissionResult, PoolError, PoolResult,
};
pub mod entity;
mod generated_roles;
#[cfg(all(feature = "global-index", feature = "with-json"))]
pub mod global_index;
#[cfg(all(feature = "global-index", feature = "with-json"))]
pub use global_index::{GlobalIndex, IndexEntry, SyncEvent};
#[cfg(feature = "health-check")]
pub mod health;
#[cfg(feature = "metrics")]
pub mod metrics;
#[cfg(feature = "migration")]
pub mod migration;
#[cfg(feature = "permission")]
pub mod permission;
#[cfg(feature = "sql-parser")]
pub mod sql_parser;
#[cfg(all(feature = "sql-parser", not(feature = "permission")))]
pub use sql_parser::PermissionAction;
#[cfg(feature = "permission")]
pub use permission::{PermissionAction, PermissionContext, RolePolicy, TablePermission};
#[cfg(feature = "permission")]
pub use permission::provider::{
SimplePermissionConfig, SimplePermissionProvider, SimpleRolePolicy, SimpleTablePermission,
};
#[cfg(feature = "permission")]
pub type Operation = permission::PermissionAction;
#[cfg(feature = "permission-engine")]
pub mod permission_engine;
#[cfg(feature = "permission-engine")]
pub use permission_engine::{
PermissionAction as EnginePermissionAction, PermissionContext as PermissionEngineContext, PermissionDecision,
PermissionEngine, PermissionEngineConfig, PermissionProvider, PermissionResource, PermissionRule,
PermissionSubject, PolicyDecisionPoint, RbacPermissionProvider, Role, YamlPermissionProvider,
};
pub mod pool;
#[cfg(feature = "sharding")]
pub mod sharding;
#[cfg(feature = "tracing")]
pub mod tracing;
pub use crate::pool::DbPool;
pub use crate::pool::Session;
pub use crate::pool::{ConnectionPool, DatabaseSession};
#[cfg(feature = "macros")]
pub use dbnexus_macros::DbEntity;
#[cfg(feature = "macros")]
pub use dbnexus_macros::db_audit;
#[cfg(feature = "macros")]
pub use dbnexus_macros::db_cache;
#[cfg(feature = "macros")]
pub use dbnexus_macros::db_crud;
#[cfg(feature = "macros")]
pub use dbnexus_macros::db_permission;