diff options
Diffstat (limited to 'rust/scraper/src/database/mod.rs')
-rw-r--r-- | rust/scraper/src/database/mod.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/rust/scraper/src/database/mod.rs b/rust/scraper/src/database/mod.rs index d712259..ee15e3b 100644 --- a/rust/scraper/src/database/mod.rs +++ b/rust/scraper/src/database/mod.rs @@ -1,9 +1,12 @@ pub mod postgres; pub mod error; +use std::error::Error; +use futures::TryFutureExt; pub use error::DatabaseError; use proto::touchpad::common::v1; +use crate::hub::Output; type Result<T> = std::result::Result<T, DatabaseError>; @@ -22,3 +25,24 @@ pub trait DatabaseClient { async fn get_event_by_number(&self, meet_id: u32, number: u32) -> Result<v1::Event>; async fn add_event(&self, event: &v1::Event) -> Result<()>; } + +#[async_trait::async_trait] +impl<T> Output for T + where + T: DatabaseClient + Sync { + async fn add_swimmer(&self, swimmer: &v1::Swimmer) -> std::result::Result<(), Box<dyn Error>> { + self.add_swimmer(swimmer).err_into().await + } + + async fn add_team(&self, team: &v1::Team) -> std::result::Result<(), Box<dyn Error>> { + self.add_team(team).err_into().await + } + + async fn add_meet(&self, meet: &v1::SwimMeet) -> std::result::Result<(), Box<dyn Error>> { + self.add_meet(meet).err_into().await + } + + async fn upsert_event(&self, event: &v1::Event) -> std::result::Result<(), Box<dyn std::error::Error>> { + self.add_event(event).err_into().await + } +}
\ No newline at end of file |