use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
mod common;
#[cfg(feature = "sync")]
mod sync;
#[cfg(feature = "async")]
mod r#async;
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
pub struct NewsProvider {
pub code: String,
pub name: String,
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
pub struct NewsBulletin {
pub message_id: i32,
pub message_type: i32,
pub message: String,
pub exchange: String,
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
pub struct NewsArticle {
pub time: OffsetDateTime,
pub provider_code: String,
pub article_id: String,
pub headline: String,
pub extra_data: String,
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, Default)]
pub enum ArticleType {
#[default]
Text = 0,
Binary = 1,
}
impl From<i32> for ArticleType {
fn from(value: i32) -> Self {
match value {
0 => ArticleType::Text,
1 => ArticleType::Binary,
_ => ArticleType::Text,
}
}
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, Default)]
pub struct NewsArticleBody {
pub article_type: ArticleType,
pub article_text: String,
}
#[cfg(feature = "sync")]
pub mod blocking {
pub(crate) use super::sync::{broad_tape_news, contract_news, historical_news, news_article, news_bulletins, news_providers};
}
#[cfg(all(feature = "sync", not(feature = "async")))]
#[allow(unused_imports)]
pub(crate) use sync::{broad_tape_news, contract_news, historical_news, news_article, news_bulletins, news_providers};
#[cfg(feature = "async")]
pub(crate) use r#async::{broad_tape_news, contract_news, historical_news, news_article, news_bulletins, news_providers};