pub mod admin;
pub mod error;
pub mod extension;
pub mod lifecycle;
pub mod models;
#[macro_use]
pub mod repository;
pub mod resilience;
pub mod services;
pub use extension::DatabaseExtension;
pub use models::{
ColumnInfo, DatabaseInfo, DatabaseQuery, DatabaseTransaction, DbValue, FromDbValue, IndexInfo,
JsonRow, QueryResult, QueryRow, QuerySelector, TableInfo, ToDbValue, parse_database_datetime,
};
pub use services::{
BoxFuture, Database, DatabaseCliDisplay, DatabaseExt, DatabaseProvider, DbPool, PoolConfig,
PostgresProvider, SqlExecutor, with_transaction_retry,
};
pub use error::DatabaseResult;
pub use lifecycle::{
AppliedMigration, BOOTSTRAP_ADVISORY_LOCK_KEY, BaselineStamp, BootstrapLockGuard,
ChecksumDrift, DeferredForeignKey, ExpensiveStatement, ExtensionMigrationStatus,
FkDeferralError, ForeignKeyDrift, FreshnessCheck, HOT_TABLES, MarkAppliedOutcome,
MigrationConfig, MigrationCost, MigrationResult, MigrationService, MigrationStatus,
OrphanMigrationLedger, OrphanedMigration, PendingMigration, RepairResult, ReplicaStatus,
SchemaCurrency, SchemaInstallReport, SchemaResidue, SlotCollision, SplitCreateTable,
TombstonedSlot, UndeclaredTable, audit_migration_cost, audit_one, audit_schema_residue,
check_migration_references, check_trigger_routines, install_extension_schemas_full,
is_retirement, replica_status, schema_currency, split_create_table_foreign_keys,
validate_column_exists, validate_database_connection, validate_table_exists,
validate_write_pool_is_primary,
};
pub use repository::{
CreateServiceInput, INSTANCE_CLAIM_CLASS, InstanceClaim, InstanceClaimError, PgDbPool,
ServiceConfig, ServiceModule, ServiceRepository, ServiceStatus, UpsertServiceProcessInput,
};
pub use admin::{
AdminSql, AdminSqlError, DEFAULT_READONLY_ROW_LIMIT, DatabaseAdminService, IdentifierError,
QueryExecutor, QueryExecutorError, SafeIdentifier,
};
use systemprompt_traits::DatabaseHandle;
impl DatabaseHandle for Database {
fn is_connected(&self) -> bool {
!self.pool().is_closed() && !self.write_pool().is_closed()
}
fn as_any(&self) -> &dyn std::any::Any {
self
}
}