1use anyhow::Result;
2
3use super::super::commands::{
4 AccountFlagArgs, BizGroupArgs, BondAnswerStateArgs, BondPositionListArgs, BondSingleAssetArgs,
5 BondTotalAssetArgs, BondTradeReminderArgs, CashDetailArgs, CashLogArgs, MarginInfoArgs,
6};
7use crate::cmd;
8use crate::output::OutputFormat;
9
10pub(super) async fn dispatch_cash_log(
11 gateway: &str,
12 output: OutputFormat,
13 args: CashLogArgs,
14) -> Result<()> {
15 let CashLogArgs {
16 acc_id_pos,
17 acc_id,
18 card_num,
19 env,
20 begin_time,
21 end_time,
22 log_id_cursor,
23 biz_group_id,
24 biz_sub_group_id,
25 in_out,
26 currency,
27 symbol,
28 stock_id,
29 max_cnt,
30 keyword,
31 } = args;
32 let acc_id = cmd::account::resolve_account_locator(
34 gateway,
35 acc_id_pos.or(acc_id),
36 card_num.as_deref(),
37 "cash-log",
38 )
39 .await?;
40 cmd::tier_m::run_cash_log(cmd::tier_m::CashLogCommand {
41 gateway,
42 env: &env,
43 acc_id,
44 begin_time,
45 end_time,
46 log_id_cursor,
47 biz_group_id,
48 biz_sub_group_id,
49 in_out,
50 keyword,
51 symbol,
52 stock_id,
53 max_cnt,
54 currency,
55 format: output,
56 })
57 .await
58}
59
60pub(super) async fn dispatch_cash_detail(
61 gateway: &str,
62 output: OutputFormat,
63 args: CashDetailArgs,
64) -> Result<()> {
65 let CashDetailArgs {
66 acc_id_pos,
67 acc_id,
68 card_num,
69 env,
70 log_id,
71 } = args;
72 let acc_id = cmd::account::resolve_account_locator(
73 gateway,
74 acc_id_pos.or(acc_id),
75 card_num.as_deref(),
76 "cash-detail",
77 )
78 .await?;
79 cmd::tier_m::run_cash_detail(gateway, &env, acc_id, log_id, output).await
80}
81
82pub(super) async fn dispatch_biz_group(
83 gateway: &str,
84 output: OutputFormat,
85 args: BizGroupArgs,
86) -> Result<()> {
87 let BizGroupArgs {
88 acc_id_pos,
89 acc_id,
90 card_num,
91 env,
92 } = args;
93 let acc_id = cmd::account::resolve_account_locator(
94 gateway,
95 acc_id_pos.or(acc_id),
96 card_num.as_deref(),
97 "biz-group",
98 )
99 .await?;
100 cmd::tier_m::run_biz_group(gateway, &env, acc_id, output).await
101}
102
103pub(super) async fn dispatch_margin_info(
104 gateway: &str,
105 output: OutputFormat,
106 args: MarginInfoArgs,
107) -> Result<()> {
108 let MarginInfoArgs {
109 acc_id_pos,
110 acc_id,
111 card_num,
112 env,
113 market,
114 } = args;
115 let acc_id = cmd::account::resolve_account_locator(
116 gateway,
117 acc_id_pos.or(acc_id),
118 card_num.as_deref(),
119 "margin-info",
120 )
121 .await?;
122 cmd::tier_m::run_margin_info(gateway, &env, acc_id, &market, output).await
123}
124
125pub(super) async fn dispatch_account_flag(
126 gateway: &str,
127 output: OutputFormat,
128 args: AccountFlagArgs,
129) -> Result<()> {
130 let AccountFlagArgs {
131 acc_id,
132 card_num,
133 env,
134 flag_id,
135 } = args;
136 let acc_id =
137 cmd::account::resolve_account_locator(gateway, acc_id, card_num.as_deref(), "account-flag")
138 .await?;
139 cmd::tier_m::run_account_flag(gateway, &env, acc_id, flag_id, output).await
140}
141
142pub(super) async fn dispatch_bond_total_asset(
143 gateway: &str,
144 output: OutputFormat,
145 args: BondTotalAssetArgs,
146) -> Result<()> {
147 let BondTotalAssetArgs {
148 acc_id,
149 card_num,
150 env,
151 market,
152 } = args;
153 let acc_id = cmd::account::resolve_account_locator(
154 gateway,
155 acc_id,
156 card_num.as_deref(),
157 "bond-total-asset",
158 )
159 .await?;
160 cmd::tier_m::run_bond_total_asset(gateway, &env, acc_id, &market, output).await
161}
162
163pub(super) async fn dispatch_bond_single_asset(
164 gateway: &str,
165 output: OutputFormat,
166 args: BondSingleAssetArgs,
167) -> Result<()> {
168 let BondSingleAssetArgs {
169 acc_id,
170 card_num,
171 env,
172 market,
173 symbol,
174 } = args;
175 let acc_id = cmd::account::resolve_account_locator(
176 gateway,
177 acc_id,
178 card_num.as_deref(),
179 "bond-single-asset",
180 )
181 .await?;
182 cmd::tier_m::run_bond_single_asset(gateway, &env, acc_id, &market, &symbol, output).await
183}
184
185pub(super) async fn dispatch_bond_position_list(
186 gateway: &str,
187 output: OutputFormat,
188 args: BondPositionListArgs,
189) -> Result<()> {
190 let BondPositionListArgs {
191 acc_id,
192 card_num,
193 env,
194 market,
195 } = args;
196 let acc_id = cmd::account::resolve_account_locator(
197 gateway,
198 acc_id,
199 card_num.as_deref(),
200 "bond-position-list",
201 )
202 .await?;
203 cmd::tier_m::run_bond_position_list(gateway, &env, acc_id, &market, output).await
204}
205
206pub(super) async fn dispatch_bond_answer_state(
207 gateway: &str,
208 output: OutputFormat,
209 args: BondAnswerStateArgs,
210) -> Result<()> {
211 let BondAnswerStateArgs {
212 acc_id,
213 card_num,
214 env,
215 market,
216 symbol,
217 } = args;
218 let acc_id = cmd::account::resolve_account_locator(
219 gateway,
220 acc_id,
221 card_num.as_deref(),
222 "bond-answer-state",
223 )
224 .await?;
225 cmd::tier_m::run_bond_answer_state(gateway, &env, acc_id, &market, &symbol, output).await
226}
227
228pub(super) async fn dispatch_bond_trade_reminder(
229 gateway: &str,
230 output: OutputFormat,
231 args: BondTradeReminderArgs,
232) -> Result<()> {
233 let BondTradeReminderArgs {
234 acc_id,
235 card_num,
236 env,
237 market,
238 symbol,
239 } = args;
240 let acc_id = cmd::account::resolve_account_locator(
241 gateway,
242 acc_id,
243 card_num.as_deref(),
244 "bond-trade-reminder",
245 )
246 .await?;
247 cmd::tier_m::run_bond_trade_reminder(gateway, &env, acc_id, &market, &symbol, output).await
248}