pub struct Postgres { /* private fields */ }Expand description
An open Postgres connection pool (sqlx 0.8, runtime-tokio,
tls-rustls).
One pool per tenant database: ADR 0008 keeps tenants isolated at the database boundary, and the native runtime (#19) holds one adapter per tenant.
Implementations§
Source§impl Postgres
impl Postgres
Sourcepub async fn apply_migrations(
&self,
module: &str,
migrations: &[SqlMigration],
) -> Result<(), DbError>
pub async fn apply_migrations( &self, module: &str, migrations: &[SqlMigration], ) -> Result<(), DbError>
Applies a module’s unapplied migrations in id order, tracked
under <module>/<id> in a harness_migrations table; each
migration runs in its own transaction so a failure rolls back
atomically and re-running is idempotent. Mirrors
SqliteDatabase::apply_migrations exactly.
§Errors
DbError::Batch when the tracking DDL or a migration’s SQL
fails, or when the bookkeeping insert cannot be rendered.
Sourcepub async fn apply_harness_migrations(
&self,
harness: &Harness,
) -> Result<(), DbError>
pub async fn apply_harness_migrations( &self, harness: &Harness, ) -> Result<(), DbError>
Applies every module’s migrations for a whole harness, in lock
order: modules in harness (config) order, each set by zero-padded
migration id — the order fz migrations collect pins in
.harness-lock.json. For each module the postgres set applies
when shipped, else the sqlite set when it passes the portable
lint (select_set).
§Errors
DbError::Batch when a module’s sqlite set fails the lint or any
migration fails to apply.
Source§impl Postgres
impl Postgres
Sourcepub async fn connect(url: &str) -> Result<Self, DbError>
pub async fn connect(url: &str) -> Result<Self, DbError>
Opens a pool and establishes at least one connection, failing fast on an unreachable server or bad credentials.
§Errors
DbError::Execute when the pool cannot connect.
Sourcepub async fn close(&self) -> Result<(), DbError>
pub async fn close(&self) -> Result<(), DbError>
Closes the pool: waits for in-flight queries, then closes every
connection. Dropping the adapter eventually closes the pool too;
close makes shutdown deterministic for the parity kit and the
native runtime.
§Errors
DbError::Execute when the pool cannot be closed.
Trait Implementations§
Source§impl Database for Postgres
impl Database for Postgres
Source§fn batch<'life0, 'life1, 'async_trait>(
&'life0 self,
stmts: &'life1 [Statement],
) -> Pin<Box<dyn Future<Output = Result<(), DbError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn batch<'life0, 'life1, 'async_trait>(
&'life0 self,
stmts: &'life1 [Statement],
) -> Pin<Box<dyn Future<Output = Result<(), DbError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Runs all statements in one transaction (atomic on Postgres).
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
stmt: &'life1 Statement,
) -> Pin<Box<dyn Future<Output = Result<u64, DbError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query<'life0, 'life1, 'async_trait>(
&'life0 self,
stmt: &'life1 Statement,
) -> Pin<Box<dyn Future<Output = Result<Rows, DbError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Auto Trait Implementations§
impl !RefUnwindSafe for Postgres
impl !UnwindSafe for Postgres
impl Freeze for Postgres
impl Send for Postgres
impl Sync for Postgres
impl Unpin for Postgres
impl UnsafeUnpin for Postgres
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more