hypercall_db/traits/
orders.rs1use anyhow::Result;
7use hypercall_types::{OrderUpdateMessage, WalletAddress};
8use std::collections::HashMap;
9
10use crate::{FillSideEffects, OrderInfoRecord, PersistOrderAction, PersistOrderInfo};
11
12pub trait OrderReader: Send + Sync {
14 fn get_order_infos_sync(&self, wallet: Option<&WalletAddress>) -> Result<Vec<OrderInfoRecord>>;
16 fn get_client_ids_by_order_ids_sync(
18 &self,
19 order_ids: &[i64],
20 ) -> Result<HashMap<i64, Option<String>>>;
21 fn get_terminal_order_ids_sync(&self, order_ids: &[i64]) -> Result<Vec<i64>>;
23 fn get_max_order_id_sync(&self) -> Result<u64>;
25 fn get_max_trade_id_sync(&self) -> Result<u64>;
27}
28
29pub trait OrderWriter: OrderReader {
31 fn persist_order_info_sync(&self, info: &PersistOrderInfo) -> Result<()>;
33
34 fn persist_order_action_sync(&self, action: &PersistOrderAction) -> Result<()>;
36
37 fn persist_order_update_sync(&self, update: &OrderUpdateMessage) -> Result<()>;
39
40 fn persist_fill_with_side_effects_sync(
42 &self,
43 fill: &hypercall_types::Fill,
44 side_effects: &FillSideEffects,
45 ) -> Result<(bool, bool)>;
46
47 fn batch_cancel_orders_for_settlement_sync(
49 &self,
50 order_ids: &[i64],
51 timestamp_ms: i64,
52 ) -> Result<usize>;
53
54 fn cancel_orphaned_orders_by_symbols_sync(&self, symbols: &[String]) -> Result<usize>;
56}