pub struct EnhancedPostgresBackend { /* private fields */ }Implementations§
Source§impl EnhancedPostgresBackend
impl EnhancedPostgresBackend
pub async fn new(config: EnhancedPostgresConfig) -> StateResult<Self>
Sourcepub async fn begin_transaction(
&self,
isolation_level: IsolationLevel,
) -> StateResult<PostgresTransaction<'_>>
pub async fn begin_transaction( &self, isolation_level: IsolationLevel, ) -> StateResult<PostgresTransaction<'_>>
Begin a new transaction with specified isolation level
Sourcepub async fn batch_copy(&self, entries: &[(&[u8], &[u8])]) -> StateResult<()>
pub async fn batch_copy(&self, entries: &[(&[u8], &[u8])]) -> StateResult<()>
Batch insert using COPY command for maximum performance
Sourcepub async fn batch_put(&self, entries: &[(&[u8], &[u8])]) -> StateResult<()>
pub async fn batch_put(&self, entries: &[(&[u8], &[u8])]) -> StateResult<()>
Batch put operation (standard transaction version)
Sourcepub async fn query_by_metadata(
&self,
json_path: &str,
value: &Value,
) -> StateResult<Vec<(Vec<u8>, Vec<u8>)>>
pub async fn query_by_metadata( &self, json_path: &str, value: &Value, ) -> StateResult<Vec<(Vec<u8>, Vec<u8>)>>
Query with JSONB path expressions
Sourcepub async fn put_with_version(
&self,
key: &[u8],
value: &[u8],
expected_version: Option<i64>,
) -> StateResult<i64>
pub async fn put_with_version( &self, key: &[u8], value: &[u8], expected_version: Option<i64>, ) -> StateResult<i64>
Put with optimistic locking using version column
Sourcepub async fn put_with_metadata(
&self,
key: &[u8],
value: &[u8],
metadata: Value,
) -> StateResult<()>
pub async fn put_with_metadata( &self, key: &[u8], value: &[u8], metadata: Value, ) -> StateResult<()>
Put with metadata
Sourcepub async fn put_with_ttl(
&self,
key: &[u8],
value: &[u8],
ttl: Duration,
) -> StateResult<()>
pub async fn put_with_ttl( &self, key: &[u8], value: &[u8], ttl: Duration, ) -> StateResult<()>
Put with TTL
Sourcepub async fn cleanup_expired(&self) -> StateResult<usize>
pub async fn cleanup_expired(&self) -> StateResult<usize>
Clean up expired entries
Sourcepub async fn acquire_advisory_lock(&self, lock_id: i64) -> StateResult<bool>
pub async fn acquire_advisory_lock(&self, lock_id: i64) -> StateResult<bool>
Acquire PostgreSQL advisory lock
Sourcepub async fn release_advisory_lock(&self, lock_id: i64) -> StateResult<()>
pub async fn release_advisory_lock(&self, lock_id: i64) -> StateResult<()>
Release PostgreSQL advisory lock
Sourcepub async fn notify(&self, channel: &str, payload: &str) -> StateResult<()>
pub async fn notify(&self, channel: &str, payload: &str) -> StateResult<()>
Notify listeners on a channel (LISTEN/NOTIFY)
Sourcepub async fn try_become_leader(
&self,
election_key: &str,
ttl: Duration,
) -> StateResult<bool>
pub async fn try_become_leader( &self, election_key: &str, ttl: Duration, ) -> StateResult<bool>
Leader election using advisory locks with timeout
Sourcepub async fn vacuum_analyze(&self, full: bool) -> StateResult<()>
pub async fn vacuum_analyze(&self, full: bool) -> StateResult<()>
Execute VACUUM with options
Sourcepub async fn apply_retention_policy(&self) -> StateResult<usize>
pub async fn apply_retention_policy(&self) -> StateResult<usize>
Apply retention policy - delete old entries
Sourcepub async fn archive_old_data(
&self,
archive_table: &str,
age_threshold: Duration,
) -> StateResult<usize>
pub async fn archive_old_data( &self, archive_table: &str, age_threshold: Duration, ) -> StateResult<usize>
Archive old data to a separate table
Sourcepub async fn get_table_statistics(&self) -> StateResult<TableStatistics>
pub async fn get_table_statistics(&self) -> StateResult<TableStatistics>
Get comprehensive table statistics
Sourcepub async fn check_replication_status(&self) -> StateResult<ReplicationStatus>
pub async fn check_replication_status(&self) -> StateResult<ReplicationStatus>
Check replication status
Sourcepub async fn checkpoint(&self) -> StateResult<()>
pub async fn checkpoint(&self) -> StateResult<()>
Trigger a manual checkpoint
Sourcepub fn get_stats(&self) -> PostgresStatsSnapshot
pub fn get_stats(&self) -> PostgresStatsSnapshot
Get current statistics snapshot
Sourcepub fn get_pool_stats(&self) -> PoolStatistics
pub fn get_pool_stats(&self) -> PoolStatistics
Get pool statistics
Sourcepub async fn health_check(&self) -> StateResult<bool>
pub async fn health_check(&self) -> StateResult<bool>
Health check
Trait Implementations§
Source§impl StateBackend for EnhancedPostgresBackend
impl StateBackend for EnhancedPostgresBackend
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<Option<Vec<u8>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<Option<Vec<u8>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Retrieve a value for the given key Read more
Source§fn put<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key: &'life1 [u8],
value: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn put<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key: &'life1 [u8],
value: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Store a value for the given key Read more
Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete a key and its associated value Read more
Source§fn list_keys<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<Vec<Vec<u8>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_keys<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = StateResult<Vec<Vec<u8>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List all keys with the given prefix Read more
Source§fn clear<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = StateResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clear<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = StateResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Clear all state from the backend Read more
Auto Trait Implementations§
impl !RefUnwindSafe for EnhancedPostgresBackend
impl !UnwindSafe for EnhancedPostgresBackend
impl Freeze for EnhancedPostgresBackend
impl Send for EnhancedPostgresBackend
impl Sync for EnhancedPostgresBackend
impl Unpin for EnhancedPostgresBackend
impl UnsafeUnpin for EnhancedPostgresBackend
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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.