longbridge/calendar/
types.rs1#![allow(missing_docs)]
2
3use rust_decimal::Decimal;
4use serde::{Deserialize, Serialize};
5
6use crate::utils::counter::deserialize_counter_id_as_symbol;
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct CalendarEventsResponse {
11 pub date: String,
13 pub list: Vec<CalendarDateGroup>,
15 #[serde(default)]
18 pub next_date: String,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct CalendarDateGroup {
24 pub date: String,
26 pub count: i32,
28 pub infos: Vec<CalendarEventInfo>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct CalendarEventInfo {
35 #[serde(
37 rename = "counter_id",
38 deserialize_with = "deserialize_counter_id_as_symbol"
39 )]
40 pub symbol: String,
41 pub market: String,
43 pub content: String,
45 pub counter_name: String,
47 #[serde(default)]
49 pub date_type: String,
50 pub date: String,
52 #[serde(default)]
54 pub chart_uid: String,
55 pub data_kv: Vec<CalendarDataKv>,
57 #[serde(rename = "type")]
59 pub event_type: String,
60 pub datetime: String,
62 #[serde(default)]
64 pub icon: String,
65 pub star: i32,
67 pub live: Option<serde_json::Value>,
69 pub id: String,
71 #[serde(default)]
73 pub financial_market_time: String,
74 #[serde(default)]
76 pub currency: String,
77 pub ext: Option<serde_json::Value>,
79 #[serde(default)]
81 pub activity_type: String,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct CalendarDataKv {
87 pub key: String,
89 pub value: String,
91 #[serde(rename = "type")]
93 pub value_type: String,
94 #[serde(default, with = "crate::serde_utils::decimal_opt_str_is_none")]
96 pub value_raw: Option<Decimal>,
97}
98
99#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
101pub enum CalendarCategory {
102 #[serde(rename = "report")]
104 Report,
105 #[serde(rename = "dividend")]
107 Dividend,
108 #[serde(rename = "split")]
110 Split,
111 #[serde(rename = "ipo")]
113 Ipo,
114 #[serde(rename = "macrodata")]
116 MacroData,
117 #[serde(rename = "closed")]
119 Closed,
120 #[serde(rename = "meeting")]
122 Meeting,
123 #[serde(rename = "merge")]
125 Merge,
126}