#![deny(missing_docs)]
#![forbid(unsafe_code)]
#[cfg(all(not(clippy), feature = "postgres", feature = "mysql", not(feature = "sqlite")))]
compile_error!("Cannot enable both 'postgres' and 'mysql' features");
#[cfg(all(not(clippy), not(any(feature = "sqlite", feature = "postgres", feature = "mysql"))))]
compile_error!("Must enable exactly one database feature: 'sqlite', 'postgres', or 'mysql'");
#[cfg(all(not(clippy), feature = "permission-engine", not(feature = "cache")))]
compile_error!("The 'permission-engine' feature requires the 'cache' feature to be enabled");
#[cfg(all(not(clippy), feature = "sql-parser", not(feature = "cache")))]
compile_error!("The 'sql-parser' feature requires the 'cache' feature to be enabled");
pub mod common;
pub mod foundation;
pub mod domain;
pub mod database;
pub mod access;
pub mod observability;
pub mod storage;
pub mod kit;
mod generated_roles;
pub use crate::common::error::{DbNexusError, DbNexusResult};
pub use crate::foundation::config::DatabaseType;
pub use crate::foundation::config::{CacheConfig, ConfigError, DbConfig, PoolConfig};
pub use crate::foundation::{ActiveModelTrait, Condition, EntityTrait, Set};
pub use crate::foundation::error::DbError;
pub use crate::foundation::error::DbResult;
pub use crate::foundation::error::{AuditError, MigrationError, MigrationResult};
pub use crate::foundation::error::{ConfigResult, PermissionResult, PoolResult};
#[cfg(feature = "permission")]
pub use crate::domain::permission::{
PermissionAction as DomainPermissionAction, PermissionConfig as NewPermissionConfig, PermissionConfigError,
PermissionError as NewPermissionError, PermissionProvider, RolePolicy as DomainRolePolicy,
TablePermission as DomainTablePermission,
};
#[cfg(feature = "migration")]
pub use crate::database::migration::{
Column, ColumnType, Index, Migration, MigrationExecutor, MigrationFile, MigrationFileParser, MigrationHistory,
MigrationVersion, Schema, SchemaDiffer, SqlGenerator, Table, TableChange,
};
pub use crate::database::pool::DbPool;
pub use crate::database::pool::DbPoolBuilder;
pub use crate::database::pool::Session;
pub use crate::database::pool::{ConnectionPool, DatabaseSession};
#[cfg(feature = "sharding")]
pub use crate::database::sharding::{ShardConfig, ShardRouter, ShardingStrategy};
#[cfg(feature = "sql-parser")]
pub use crate::access::security::{DdlGuard, DdlValidationResult};
pub use crate::access::security::{MaskType, SensitiveError, SensitiveMasker, SensitiveResult};
#[cfg(feature = "permission")]
#[cfg(not(feature = "permission-engine"))]
pub use crate::access::permission::{
MemoryPermissionProvider, PermissionAction as AccessPermissionAction, PermissionConfig, PermissionContext,
PermissionProvider as AccessPermissionProvider, PermissionProviderError, RolePolicy as AccessRolePolicy,
TablePermission as AccessTablePermission, YamlPermissionProvider,
};
#[cfg(all(feature = "permission", feature = "permission-engine"))]
pub use crate::access::permission::{
MemoryPermissionProvider, PermissionAction as AccessPermissionAction, PermissionConfig,
PermissionProvider as AccessPermissionProvider, PermissionProviderError, RolePolicy as AccessRolePolicy,
TablePermission as AccessTablePermission, YamlPermissionProvider,
};
#[cfg(feature = "authentication")]
pub use crate::access::authentication::{
AuthCredentials, AuthError, AuthResult, AuthenticationManager, JwtClaims, JwtManager, PasswordHasher, TokenType,
User,
};
#[cfg(feature = "sql-parser")]
pub use crate::access::sql_parser::SqlParser;
#[cfg(feature = "sql-parser")]
pub use crate::access::sql_parser::SqlOperationType;
#[cfg(feature = "sql-parser")]
pub use crate::access::sql_parser::is_ddl_operation;
#[cfg(feature = "sql-parser")]
pub use crate::access::sql_parser::contains_sql_injection;
#[cfg(feature = "permission-engine")]
#[cfg(feature = "permission")]
pub use crate::access::permission_engine::{
PermissionAction as EnginePermissionAction, PermissionContext as PermissionEngineContext, PermissionDecision,
PermissionProvider as EnginePermissionProvider, PermissionResource,
PermissionRule, PermissionSubject, PolicyDecisionPoint, PolicyDecisionPointConfig, RbacPermissionProvider, Role,
YamlPermissionProvider as EngineYamlPermissionProvider,
};
#[cfg(feature = "health-check")]
pub use crate::observability::health::{
CircuitBreaker, CircuitBreakerConfig, CircuitBreakerError, CircuitBreakerState, HealthChecker, HealthStatus,
PoolHealthMetrics,
};
#[cfg(feature = "metrics")]
pub use crate::observability::metrics::{
ConnectionAcquireStats, HistogramBucket, HistogramStats, LatencyHistogram, LatencyPercentiles, MetricsCollector,
MetricsCollectorTrait, MetricsError, PoolMetrics, QueryStats, SlowQueryConfig, SlowQueryRecord,
ThroughputStats, TransactionStats,
};
#[cfg(all(feature = "metrics", any(test, feature = "test-utils")))]
pub use crate::observability::metrics::MockMetrics;
#[cfg(feature = "global-index")]
pub use crate::storage::global_index::{
GlobalIndex, IndexEntry, SYNC_STATUS_FAILED, SYNC_STATUS_PENDING, SYNC_STATUS_SYNCED, SyncEvent, SyncResult,
};
#[cfg(feature = "audit")]
pub use crate::domain::audit::{
AuditConfig, AuditContext, AuditEvent, AuditEventBuilder, AuditLogger, AuditOperation,
AuditQueryFilters, AuditSeverity, AuditStatus, AuditStorage, MemoryAuditStorage,
};
#[cfg(feature = "audit")]
pub use crate::foundation::error::AuditResult;
#[cfg(feature = "macros")]
pub use dbnexus_macros::db_entity;
pub use crate::kit::{DbNexusKit, keys::*};