use serde::{Deserialize, Serialize};
mod common;
#[cfg(feature = "sync")]
mod sync;
#[cfg(feature = "async")]
mod r#async;
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ScannerSubscription {
pub number_of_rows: i32,
pub instrument: Option<String>,
pub location_code: Option<String>,
pub scan_code: Option<String>,
pub above_price: Option<f64>,
pub below_price: Option<f64>,
pub above_volume: Option<i32>,
pub average_option_volume_above: Option<i32>,
pub market_cap_above: Option<f64>,
pub market_cap_below: Option<f64>,
pub moody_rating_above: Option<String>,
pub moody_rating_below: Option<String>,
pub sp_rating_above: Option<String>,
pub sp_rating_below: Option<String>,
pub maturity_date_above: Option<String>,
pub maturity_date_below: Option<String>,
pub coupon_rate_above: Option<f64>,
pub coupon_rate_below: Option<f64>,
pub exclude_convertible: bool,
pub scanner_setting_pairs: Option<String>,
pub stock_type_filter: Option<String>,
}
impl Default for ScannerSubscription {
fn default() -> Self {
ScannerSubscription {
number_of_rows: -1,
instrument: None,
location_code: None,
scan_code: None,
above_price: None,
below_price: None,
above_volume: None,
average_option_volume_above: None,
market_cap_above: None,
market_cap_below: None,
moody_rating_above: None,
moody_rating_below: None,
sp_rating_above: None,
sp_rating_below: None,
maturity_date_above: None,
maturity_date_below: None,
coupon_rate_above: None,
coupon_rate_below: None,
exclude_convertible: false,
scanner_setting_pairs: None,
stock_type_filter: None,
}
}
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct ScannerData {
pub rank: i32,
pub contract_details: crate::contracts::ContractDetails,
pub leg: String,
}
#[cfg(feature = "sync")]
pub mod blocking {
pub(crate) use super::sync::{scanner_parameters, scanner_subscription};
}
#[cfg(all(feature = "sync", not(feature = "async")))]
#[allow(unused_imports)]
pub(crate) use sync::{scanner_parameters, scanner_subscription};
#[cfg(feature = "async")]
pub(crate) use r#async::{scanner_parameters, scanner_subscription};