@@ -6,6 +6,7 @@ use crate::local_db::{
66} ;
77use crate :: raindex_client:: local_db:: query:: fetch_vault_balance_changes:: fetch_vault_balance_changes;
88use crate :: raindex_client:: local_db:: vaults:: LocalDbVaults ;
9+ use crate :: types:: VaultBalanceChangeKind ;
910use crate :: {
1011 deposit:: DepositArgs ,
1112 erc20:: ERC20 ,
@@ -629,27 +630,34 @@ pub enum RaindexVaultBalanceChangeType {
629630 Unknown ,
630631}
631632impl_wasm_traits ! ( RaindexVaultBalanceChangeType ) ;
633+
634+ impl From < VaultBalanceChangeKind > for RaindexVaultBalanceChangeType {
635+ fn from ( kind : VaultBalanceChangeKind ) -> Self {
636+ match kind {
637+ VaultBalanceChangeKind :: Deposit => Self :: Deposit ,
638+ VaultBalanceChangeKind :: Withdrawal => Self :: Withdrawal ,
639+ VaultBalanceChangeKind :: TakeOrder => Self :: TakeOrder ,
640+ VaultBalanceChangeKind :: Clear => Self :: Clear ,
641+ VaultBalanceChangeKind :: ClearBounty => Self :: ClearBounty ,
642+ VaultBalanceChangeKind :: Unknown => Self :: Unknown ,
643+ }
644+ }
645+ }
646+
632647impl TryFrom < String > for RaindexVaultBalanceChangeType {
633648 type Error = RaindexError ;
634649 fn try_from ( value : String ) -> Result < Self , Self :: Error > {
635- match value. as_str ( ) {
636- "Deposit" | "DEPOSIT" => Ok ( RaindexVaultBalanceChangeType :: Deposit ) ,
637- "Withdrawal" | "WITHDRAWAL" | "WITHDRAW" => {
638- Ok ( RaindexVaultBalanceChangeType :: Withdrawal )
639- }
640- "TAKE_INPUT" | "TAKE_OUTPUT" => Ok ( RaindexVaultBalanceChangeType :: TakeOrder ) ,
641- "CLEAR_ALICE_INPUT" | "CLEAR_ALICE_OUTPUT" | "CLEAR_BOB_INPUT" | "CLEAR_BOB_OUTPUT" => {
642- Ok ( RaindexVaultBalanceChangeType :: Clear )
650+ let kind = VaultBalanceChangeKind :: from_local_db_change_type ( & value) ;
651+ if matches ! ( kind, VaultBalanceChangeKind :: Unknown ) {
652+ let kind_from_sg = VaultBalanceChangeKind :: from_subgraph_typename ( & value) ;
653+ if matches ! ( kind_from_sg, VaultBalanceChangeKind :: Unknown ) && value != "Unknown" {
654+ return Err ( RaindexError :: InvalidVaultBalanceChangeType ( value) ) ;
643655 }
644- "ClearBounty" | "CLEAR_ALICE_BOUNTY" | "CLEAR_BOB_BOUNTY" => {
645- Ok ( RaindexVaultBalanceChangeType :: ClearBounty )
646- }
647- "Unknown" | "UNKNOWN" => Ok ( RaindexVaultBalanceChangeType :: Unknown ) ,
648- _ => Err ( RaindexError :: InvalidVaultBalanceChangeType ( value) ) ,
656+ return Ok ( kind_from_sg. into ( ) ) ;
649657 }
658+ Ok ( kind. into ( ) )
650659 }
651660}
652- impl RaindexVaultBalanceChangeType { }
653661
654662#[ derive( Serialize , Deserialize , Debug , Clone , PartialEq , Eq , Hash , Tsify ) ]
655663#[ serde( rename_all = "camelCase" ) ]
@@ -663,21 +671,20 @@ pub enum VaultBalanceChangeFilter {
663671impl_wasm_traits ! ( VaultBalanceChangeFilter ) ;
664672
665673impl VaultBalanceChangeFilter {
666- pub fn to_local_db_types ( & self ) -> Vec < & ' static str > {
674+ pub fn to_kind ( & self ) -> VaultBalanceChangeKind {
667675 match self {
668- Self :: Deposit => vec ! [ "DEPOSIT" ] ,
669- Self :: Withdrawal => vec ! [ "WITHDRAW" ] ,
670- Self :: TakeOrder => vec ! [ "TAKE_INPUT" , "TAKE_OUTPUT" ] ,
671- Self :: Clear => vec ! [
672- "CLEAR_ALICE_INPUT" ,
673- "CLEAR_ALICE_OUTPUT" ,
674- "CLEAR_BOB_INPUT" ,
675- "CLEAR_BOB_OUTPUT" ,
676- ] ,
677- Self :: ClearBounty => vec ! [ "CLEAR_ALICE_BOUNTY" , "CLEAR_BOB_BOUNTY" ] ,
676+ Self :: Deposit => VaultBalanceChangeKind :: Deposit ,
677+ Self :: Withdrawal => VaultBalanceChangeKind :: Withdrawal ,
678+ Self :: TakeOrder => VaultBalanceChangeKind :: TakeOrder ,
679+ Self :: Clear => VaultBalanceChangeKind :: Clear ,
680+ Self :: ClearBounty => VaultBalanceChangeKind :: ClearBounty ,
678681 }
679682 }
680683
684+ pub fn to_local_db_types ( & self ) -> & ' static [ & ' static str ] {
685+ self . to_kind ( ) . to_local_db_change_types ( )
686+ }
687+
681688 pub fn to_raindex_type ( & self ) -> RaindexVaultBalanceChangeType {
682689 match self {
683690 Self :: Deposit => RaindexVaultBalanceChangeType :: Deposit ,
@@ -866,11 +873,11 @@ impl RaindexVaultBalanceChange {
866873 let formatted_new_balance = new_balance. format ( ) ?;
867874 let formatted_old_balance = old_balance. format ( ) ?;
868875
869- let change_type = match balance_change . trade . trade_event . __typename . as_str ( ) {
870- "TakeOrder" => RaindexVaultBalanceChangeType :: TakeOrder ,
871- "Clear" => RaindexVaultBalanceChangeType :: Clear ,
872- _ => RaindexVaultBalanceChangeType :: Unknown ,
873- } ;
876+ let change_type: RaindexVaultBalanceChangeType =
877+ VaultBalanceChangeKind :: from_subgraph_typename (
878+ & balance_change . trade . trade_event . __typename ,
879+ )
880+ . into ( ) ;
874881
875882 Ok ( Self {
876883 r#type : change_type,
@@ -1042,11 +1049,8 @@ impl RaindexVaultBalanceChange {
10421049 decimals,
10431050 } ;
10441051
1045- let change_type = match balance. trade_kind . as_str ( ) {
1046- "take" => RaindexVaultBalanceChangeType :: TakeOrder ,
1047- "clear" => RaindexVaultBalanceChangeType :: Clear ,
1048- _ => RaindexVaultBalanceChangeType :: Unknown ,
1049- } ;
1052+ let change_type: RaindexVaultBalanceChangeType =
1053+ VaultBalanceChangeKind :: from_local_db_trade_kind ( & balance. trade_kind ) . into ( ) ;
10501054
10511055 Ok ( Self {
10521056 r#type : change_type,
0 commit comments