finql_data/
quote_handler.rs1use chrono::{DateTime, Utc};
4use async_trait::async_trait;
5
6use super::AssetHandler;
7use super::DataError;
8use crate::currency::Currency;
9use crate::quote::{Quote, Ticker};
10
11#[async_trait]
13pub trait QuoteHandler: AssetHandler {
14 async fn insert_ticker(&self, ticker: &Ticker) -> Result<usize, DataError>;
16 async fn get_ticker_id(&self, ticker: &str) -> Option<usize>;
17 async fn insert_if_new_ticker(&self, ticker: &Ticker) -> Result<usize, DataError>;
18 async fn get_ticker_by_id(&self, id: usize) -> Result<Ticker, DataError>;
19 async fn get_all_ticker(&self) -> Result<Vec<Ticker>, DataError>;
20 async fn get_all_ticker_for_source(
21 &self,
22 source: &str,
23 ) -> Result<Vec<Ticker>, DataError>;
24
25 async fn get_all_ticker_for_asset(
27 &self,
28 asset_id: usize,
29 ) -> Result<Vec<Ticker>, DataError>;
30
31 async fn update_ticker(&self, ticker: &Ticker) -> Result<(), DataError>;
32 async fn delete_ticker(&self, id: usize) -> Result<(), DataError>;
33
34 async fn insert_quote(&self, quote: &Quote) -> Result<usize, DataError>;
36
37 async fn get_last_quote_before(
39 &self,
40 asset_name: &str,
41 time: DateTime<Utc>,
42 ) -> Result<(Quote, Currency), DataError>;
43
44 async fn get_last_quote_before_by_id(
46 &self,
47 asset_id: usize,
48 time: DateTime<Utc>,
49 ) -> Result<(Quote, Currency), DataError>;
50
51 async fn get_all_quotes_for_ticker(&self, ticker_id: usize) -> Result<Vec<Quote>, DataError>;
52 async fn update_quote(&self, quote: &Quote) -> Result<(), DataError>;
53 async fn delete_quote(&self, id: usize) -> Result<(), DataError>;
54
55 async fn get_rounding_digits(&self, currency: Currency) -> i32;
58 async fn set_rounding_digits(&self, currency: Currency, digits: i32) -> Result<(), DataError>;
59}