hypercall_db/traits/
tiers.rs1use anyhow::Result;
7use hypercall_types::{MarginMode, WalletAddress};
8
9use crate::{TierDefaultsRecord, UserTierRecord, UserTierUpdate};
10
11pub trait TierReader: Send + Sync {
13 fn get_margin_mode_sync(&self, wallet: &WalletAddress) -> Result<MarginMode>;
15 fn get_existing_margin_mode_sync(&self, wallet: &WalletAddress) -> Result<Option<MarginMode>>;
17 fn get_tier_defaults_sync(&self, tier_name: &str) -> Result<Option<TierDefaultsRecord>>;
19 fn get_user_tier_sync(&self, wallet: &WalletAddress) -> Result<Option<UserTierRecord>>;
21 fn get_all_user_tiers_sync(&self) -> Result<Vec<UserTierRecord>>;
23}
24
25pub trait TierWriter: TierReader {
27 fn save_user_tier_sync(&self, update: &UserTierUpdate) -> Result<()>;
29 fn set_margin_mode_sync(&self, wallet: &WalletAddress, margin_mode: MarginMode) -> Result<i64>;
31 fn insert_margin_mode_if_missing_sync(
34 &self,
35 wallet: &WalletAddress,
36 margin_mode: MarginMode,
37 ) -> Result<Option<i64>>;
38 fn delete_user_tier_sync(&self, wallet: &WalletAddress) -> Result<()>;
40}