pub struct PostgresBotRepository { /* private fields */ }Implementations§
Trait Implementations§
Source§impl BotRepository for PostgresBotRepository
impl BotRepository for PostgresBotRepository
fn create<'life0, 'life1, 'async_trait>(
&'life0 self,
bot: &'life1 Bot,
) -> Pin<Box<dyn Future<Output = Result<(), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_by_id<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Bot, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_by_id_with_token<'life0, 'life1, 'async_trait>(
&'life0 self,
id: Uuid,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Bot, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_by_account<'life0, 'async_trait>(
&'life0 self,
account_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<Vec<Bot>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn count_by_account<'life0, 'async_trait>(
&'life0 self,
account_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<i64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count_by_account<'life0, 'async_trait>(
&'life0 self,
account_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<i64, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
PERF-001: Count bots for account without fetching all rows
Use SQL COUNT(*) instead of list_by_account().len()
Source§fn list_by_account_paginated<'life0, 'async_trait>(
&'life0 self,
account_id: Uuid,
limit: i64,
offset: i64,
) -> Pin<Box<dyn Future<Output = Result<Vec<Bot>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_by_account_paginated<'life0, 'async_trait>(
&'life0 self,
account_id: Uuid,
limit: i64,
offset: i64,
) -> Pin<Box<dyn Future<Output = Result<Vec<Bot>, RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
PERF-002: Paginated list of bots for account
Use limit/offset for pagination instead of loading all bots
fn update_status<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
status: BotStatus,
) -> Pin<Box<dyn Future<Output = Result<(), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_droplet<'life0, 'async_trait>(
&'life0 self,
bot_id: Uuid,
droplet_id: Option<i64>,
) -> Pin<Box<dyn Future<Output = Result<(), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_config_version<'life0, 'async_trait>(
&'life0 self,
bot_id: Uuid,
desired: Option<Uuid>,
applied: Option<Uuid>,
) -> Pin<Box<dyn Future<Output = Result<(), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_heartbeat<'life0, 'async_trait>(
&'life0 self,
bot_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_registration_token<'life0, 'life1, 'async_trait>(
&'life0 self,
bot_id: Uuid,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'async_trait>(
&'life0 self,
id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn increment_bot_counter<'life0, 'async_trait>(
&'life0 self,
account_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(bool, i32, i32), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn increment_bot_counter<'life0, 'async_trait>(
&'life0 self,
account_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(bool, i32, i32), RepositoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Atomically increment bot counter for account, returning (success, current_count, max_count)
CRIT-002: Prevents race conditions in account limit checking
Auto Trait Implementations§
impl Freeze for PostgresBotRepository
impl !RefUnwindSafe for PostgresBotRepository
impl Send for PostgresBotRepository
impl Sync for PostgresBotRepository
impl Unpin for PostgresBotRepository
impl !UnwindSafe for PostgresBotRepository
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> 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