pub struct PostgresStore { /* private fields */ }Expand description
An EffectStore in a PostgreSQL database.
Cheap to clone; clones share the connection pool.
Implementations§
Source§impl PostgresStore
impl PostgresStore
Sourcepub async fn connect(url: &str) -> Result<Self, StoreError>
pub async fn connect(url: &str) -> Result<Self, StoreError>
Connects to url and applies migrations.
§Errors
StoreError::Backend if connecting or migrating fails.
Sourcepub async fn connect_with(options: PgConnectOptions) -> Result<Self, StoreError>
pub async fn connect_with(options: PgConnectOptions) -> Result<Self, StoreError>
Connects with options (e.g. a search_path for a schema) and
applies migrations.
§Errors
StoreError::Backend if connecting or migrating fails.
Sourcepub async fn from_pool(pool: PgPool) -> Result<Self, StoreError>
pub async fn from_pool(pool: PgPool) -> Result<Self, StoreError>
Uses an existing pool and applies migrations. Concurrent callers are safe: migrations run under an advisory lock.
§Errors
StoreError::Backend if migrating fails.
Sourcepub fn with_clock_source(self, clock: ClockSource) -> Self
pub fn with_clock_source(self, clock: ClockSource) -> Self
Chooses whose clock to trust; see ClockSource.
Trait Implementations§
Source§impl Clone for PostgresStore
impl Clone for PostgresStore
Source§impl Debug for PostgresStore
impl Debug for PostgresStore
Source§impl EffectStore for PostgresStore
impl EffectStore for PostgresStore
Source§async fn insert_or_get(
&self,
new: NewEffect,
) -> Result<InsertOutcome, StoreError>
async fn insert_or_get( &self, new: NewEffect, ) -> Result<InsertOutcome, StoreError>
Source§async fn get(&self, id: EffectId) -> Result<Option<EffectRecord>, StoreError>
async fn get(&self, id: EffectId) -> Result<Option<EffectRecord>, StoreError>
Loads a record by id.
Source§async fn get_by_key(
&self,
key: &EffectKey,
) -> Result<Option<EffectRecord>, StoreError>
async fn get_by_key( &self, key: &EffectKey, ) -> Result<Option<EffectRecord>, StoreError>
Loads a record by its logical identity.
Source§async fn acquire_lease(
&self,
id: EffectId,
owner: &WorkerId,
now: SystemTime,
ttl: Duration,
) -> Result<Lease, StoreError>
async fn acquire_lease( &self, id: EffectId, owner: &WorkerId, now: SystemTime, ttl: Duration, ) -> Result<Lease, StoreError>
Takes the execution lease, via
EffectRecord::acquire_lease.Source§async fn renew_lease(
&self,
lease: &Lease,
now: SystemTime,
ttl: Duration,
) -> Result<Lease, StoreError>
async fn renew_lease( &self, lease: &Lease, now: SystemTime, ttl: Duration, ) -> Result<Lease, StoreError>
Extends a held lease, via
EffectRecord::renew_lease.Source§async fn release_lease(&self, lease: &Lease) -> Result<(), StoreError>
async fn release_lease(&self, lease: &Lease) -> Result<(), StoreError>
Gives up a lease, via
EffectRecord::release_lease. Releasing a
lease that was already lost is not an error.Source§async fn transition(
&self,
request: TransitionRequest,
) -> Result<EffectRecord, StoreError>
async fn transition( &self, request: TransitionRequest, ) -> Result<EffectRecord, StoreError>
Applies a status transition, via
EffectRecord::apply, and appends
its audit event in the same atomic unit. Returns the updated record.Source§async fn list(&self, query: ListQuery) -> Result<Vec<EffectRecord>, StoreError>
async fn list(&self, query: ListQuery) -> Result<Vec<EffectRecord>, StoreError>
Lists records matching
query, ordered by id (creation time).Source§async fn events(&self, id: EffectId) -> Result<Vec<EffectEvent>, StoreError>
async fn events(&self, id: EffectId) -> Result<Vec<EffectEvent>, StoreError>
The audit events of one effect, ordered by sequence.
Source§async fn prune(&self, query: PruneQuery) -> Result<u64, StoreError>
async fn prune(&self, query: PruneQuery) -> Result<u64, StoreError>
Deletes up to
query.limit records matching query, lowest id
first, together with their audit events, and returns how many it
deleted. Each record is checked and deleted atomically, so a record
that a worker leases or changes concurrently is either deleted before
that change or not at all. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for PostgresStore
impl !UnwindSafe for PostgresStore
impl Freeze for PostgresStore
impl Send for PostgresStore
impl Sync for PostgresStore
impl Unpin for PostgresStore
impl UnsafeUnpin for PostgresStore
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> ⓘ
Converts
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> ⓘ
Converts
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