LocalExchangeRepository

Trait LocalExchangeRepository 

Source
pub trait LocalExchangeRepository: Send + Sync {
Show 16 methods // Required methods fn create<'life0, 'life1, 'async_trait>( &'life0 self, exchange: &'life1 LocalExchange, ) -> Pin<Box<dyn Future<Output = Result<LocalExchange, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn find_by_id<'life0, 'async_trait>( &'life0 self, id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Option<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn find_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn find_by_building_and_status<'life0, 'life1, 'async_trait>( &'life0 self, building_id: Uuid, status: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn find_by_provider<'life0, 'async_trait>( &'life0 self, provider_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn find_by_requester<'life0, 'async_trait>( &'life0 self, requester_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn find_by_owner<'life0, 'async_trait>( &'life0 self, owner_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn find_active_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn find_available_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn find_by_type<'life0, 'life1, 'async_trait>( &'life0 self, building_id: Uuid, exchange_type: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn update<'life0, 'life1, 'async_trait>( &'life0 self, exchange: &'life1 LocalExchange, ) -> Pin<Box<dyn Future<Output = Result<LocalExchange, String>> + 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<bool, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn count_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<i64, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn count_by_building_and_status<'life0, 'life1, 'async_trait>( &'life0 self, building_id: Uuid, status: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<i64, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn get_total_credits_exchanged<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<i32, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait; fn get_average_exchange_rating<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Option<f32>, String>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait;
}
Expand description

Repository trait for LocalExchange entity (SEL - Local Exchange Trading System)

Required Methods§

Source

fn create<'life0, 'life1, 'async_trait>( &'life0 self, exchange: &'life1 LocalExchange, ) -> Pin<Box<dyn Future<Output = Result<LocalExchange, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Create a new exchange offer

Source

fn find_by_id<'life0, 'async_trait>( &'life0 self, id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Option<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Find an exchange by ID

Source

fn find_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Find all exchanges for a building

Source

fn find_by_building_and_status<'life0, 'life1, 'async_trait>( &'life0 self, building_id: Uuid, status: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Find exchanges by building and status

Source

fn find_by_provider<'life0, 'async_trait>( &'life0 self, provider_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Find exchanges by provider

Source

fn find_by_requester<'life0, 'async_trait>( &'life0 self, requester_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Find exchanges by requester

Source

fn find_by_owner<'life0, 'async_trait>( &'life0 self, owner_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Find exchanges by owner (as provider OR requester)

Source

fn find_active_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Find active exchanges (Offered, Requested, InProgress)

Source

fn find_available_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Find available exchanges (status = Offered)

Source

fn find_by_type<'life0, 'life1, 'async_trait>( &'life0 self, building_id: Uuid, exchange_type: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalExchange>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Find exchanges by type

Source

fn update<'life0, 'life1, 'async_trait>( &'life0 self, exchange: &'life1 LocalExchange, ) -> Pin<Box<dyn Future<Output = Result<LocalExchange, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Update an exchange

Source

fn delete<'life0, 'async_trait>( &'life0 self, id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<bool, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Delete an exchange

Source

fn count_by_building<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<i64, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Count exchanges by building

Source

fn count_by_building_and_status<'life0, 'life1, 'async_trait>( &'life0 self, building_id: Uuid, status: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<i64, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Count exchanges by building and status

Source

fn get_total_credits_exchanged<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<i32, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get total credits exchanged in a building (sum of completed exchanges)

Source

fn get_average_exchange_rating<'life0, 'async_trait>( &'life0 self, building_id: Uuid, ) -> Pin<Box<dyn Future<Output = Result<Option<f32>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get average exchange rating for a building

Implementors§