1pub mod admin;
52pub mod error;
53pub mod extension;
54pub mod lifecycle;
55pub mod models;
56#[macro_use]
57pub mod repository;
58pub mod resilience;
59pub mod scope;
60pub mod services;
61
62pub use extension::DatabaseExtension;
63
64pub use models::{
65 ArtifactId, ClientId, ColumnInfo, ContentId, ContextId, DatabaseInfo, DatabaseQuery,
66 DatabaseTransaction, DbValue, ExecutionStepId, FileId, FromDatabaseRow, FromDbValue, IndexInfo,
67 JsonRow, LogId, QueryResult, QueryRow, QuerySelector, SessionId, SkillId, TableInfo, TaskId,
68 ToDbValue, TokenId, TraceId, UserId, parse_database_datetime,
69};
70
71pub use scope::{ConnectionScopeProvider, ScopeError, ScopeSetting, SharedScopeProvider};
72pub use services::{
73 BoxFuture, Database, DatabaseCliDisplay, DatabaseExt, DatabaseProvider, DatabaseProviderExt,
74 DbPool, PoolConfig, PostgresProvider, SqlExecutor, begin_scoped, with_scoped_transaction,
75 with_transaction, with_transaction_retry,
76};
77pub use systemprompt_models::RequestScope;
78
79pub use error::{DatabaseResult, RepositoryError};
80pub use lifecycle::{
81 AppliedMigration, BOOTSTRAP_ADVISORY_LOCK_KEY, BaselineStamp, BootstrapLockGuard,
82 ChecksumDrift, DeferredForeignKey, ExpensiveStatement, ExtensionMigrationStatus,
83 FkDeferralError, ForeignKeyDrift, FreshnessCheck, HOT_TABLES, MarkAppliedOutcome,
84 MigrationConfig, MigrationCost, MigrationResult, MigrationService, MigrationStatus,
85 OrphanMigrationLedger, OrphanedMigration, PendingMigration, RepairResult, ReplicaStatus,
86 SchemaInstallReport, SchemaResidue, SlotCollision, SplitCreateTable, TombstonedSlot,
87 UndeclaredTable, audit_migration_cost, audit_one, audit_schema_residue,
88 check_migration_references, install_extension_schemas, install_extension_schemas_full,
89 install_extension_schemas_with_config, is_retirement, replica_status,
90 split_create_table_foreign_keys, validate_column_exists, validate_database_connection,
91 validate_table_exists, validate_write_pool_is_primary,
92};
93pub use repository::{CreateServiceInput, PgDbPool, ServiceConfig, ServiceRepository};
94
95pub use admin::{
96 AdminSql, AdminSqlError, DEFAULT_READONLY_ROW_LIMIT, DatabaseAdminService, IdentifierError,
97 QueryExecutor, QueryExecutorError, SafeIdentifier,
98};
99pub use sqlx::types::Json;
100pub use sqlx::{PgPool, Pool, Postgres, Transaction};
101
102use systemprompt_traits::DatabaseHandle;
103
104impl DatabaseHandle for Database {
105 fn is_connected(&self) -> bool {
106 !self.pool().is_closed() && !self.write_pool().is_closed()
107 }
108
109 fn as_any(&self) -> &dyn std::any::Any {
110 self
111 }
112}