#![allow(missing_docs)]
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use crate::utils::counter::deserialize_counter_id_as_symbol;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CalendarEventsResponse {
pub date: String,
pub list: Vec<CalendarDateGroup>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CalendarDateGroup {
pub date: String,
pub count: i32,
pub infos: Vec<CalendarEventInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CalendarEventInfo {
#[serde(
rename = "counter_id",
deserialize_with = "deserialize_counter_id_as_symbol"
)]
pub symbol: String,
pub market: String,
pub content: String,
pub counter_name: String,
#[serde(default)]
pub date_type: String,
pub date: String,
#[serde(default)]
pub chart_uid: String,
pub data_kv: Vec<CalendarDataKv>,
#[serde(rename = "type")]
pub event_type: String,
pub datetime: String,
#[serde(default)]
pub icon: String,
pub star: i32,
pub live: Option<serde_json::Value>,
pub id: String,
#[serde(default)]
pub financial_market_time: String,
#[serde(default)]
pub currency: String,
pub ext: Option<serde_json::Value>,
#[serde(default)]
pub activity_type: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CalendarDataKv {
pub key: String,
pub value: String,
#[serde(rename = "type")]
pub value_type: String,
#[serde(default, with = "crate::serde_utils::decimal_opt_str_is_none")]
pub value_raw: Option<Decimal>,
}
#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
pub enum CalendarCategory {
#[serde(rename = "report")]
Report,
#[serde(rename = "dividend")]
Dividend,
#[serde(rename = "split")]
Split,
#[serde(rename = "ipo")]
Ipo,
#[serde(rename = "macrodata")]
MacroData,
#[serde(rename = "closed")]
Closed,
#[serde(rename = "meeting")]
Meeting,
#[serde(rename = "merge")]
Merge,
}