longbridge/calendar/
types.rs1use rust_decimal::Decimal;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct CalendarEventsResponse {
7 pub date: String,
9 pub list: Vec<CalendarDateGroup>,
11 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
14 pub next_date: String,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct CalendarDateGroup {
20 pub date: String,
22 pub count: i32,
24 pub infos: Vec<CalendarEventInfo>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct CalendarEventInfo {
31 pub symbol: String,
33 pub market: String,
35 pub content: String,
37 pub counter_name: String,
39 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
41 pub date_type: String,
42 pub date: String,
44 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
46 pub chart_uid: String,
47 pub data_kv: Vec<CalendarDataKv>,
49 #[serde(rename = "type")]
51 pub event_type: String,
52 pub datetime: String,
54 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
56 pub icon: String,
57 pub star: i32,
59 pub live: Option<serde_json::Value>,
61 pub id: String,
63 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
65 pub financial_market_time: String,
66 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
68 pub currency: String,
69 pub ext: Option<serde_json::Value>,
71 #[serde(default, deserialize_with = "crate::serde_utils::null_as_default")]
73 pub activity_type: String,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize)]
78pub struct CalendarDataKv {
79 pub key: String,
81 pub value: String,
83 #[serde(rename = "type")]
85 pub value_type: String,
86 #[serde(default, with = "crate::serde_utils::decimal_opt_str_is_none")]
88 pub value_raw: Option<Decimal>,
89}
90
91#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
93pub enum CalendarCategory {
94 #[serde(rename = "report")]
96 Report,
97 #[serde(rename = "dividend")]
99 Dividend,
100 #[serde(rename = "split")]
102 Split,
103 #[serde(rename = "ipo")]
105 Ipo,
106 #[serde(rename = "macrodata")]
108 MacroData,
109 #[serde(rename = "closed")]
111 Closed,
112 #[serde(rename = "meeting")]
114 Meeting,
115 #[serde(rename = "merge")]
117 Merge,
118}