@@ -90,7 +90,7 @@ impl OrderbookSubgraphClient {
9090 id : cynic:: Id ,
9191 pagination_args : SgPaginationArgs ,
9292 filter_typenames : Option < & [ String ] > ,
93- ) -> Result < Vec < SgVaultBalanceChangeUnwrapped > , OrderbookSubgraphClientError > {
93+ ) -> Result < Vec < SgVaultBalanceChangeType > , OrderbookSubgraphClientError > {
9494 let pagination_vars = Self :: parse_pagination_args ( pagination_args) ;
9595 let res = self
9696 . query_paginated (
@@ -109,43 +109,20 @@ impl OrderbookSubgraphClient {
109109 if !typenames. is_empty ( ) {
110110 return Ok ( res
111111 . into_iter ( )
112- . filter ( |item| typenames. contains ( & item. __typename ) )
112+ . filter ( |item| typenames. contains ( & item. typename ( ) . to_string ( ) ) )
113113 . collect ( ) ) ;
114114 }
115115 }
116116
117117 Ok ( res)
118118 }
119119
120- /// Fetch vault balance changes with full type information (including trade event details).
121- /// This uses inline fragments to distinguish between TakeOrder and Clear trade types.
122- pub async fn vault_balance_changes_list_with_trade (
123- & self ,
124- id : cynic:: Id ,
125- pagination_args : SgPaginationArgs ,
126- ) -> Result < Vec < SgVaultBalanceChangeType > , OrderbookSubgraphClientError > {
127- let pagination_vars = Self :: parse_pagination_args ( pagination_args) ;
128- let variables = SgPaginationWithIdQueryVariables {
129- id : SgBytes ( id. inner ( ) . to_string ( ) ) ,
130- skip : pagination_vars. skip ,
131- first : pagination_vars. first ,
132- } ;
133-
134- let data = self
135- . query :: < SgVaultBalanceChangesListWithTradeQuery , SgPaginationWithIdQueryVariables > (
136- variables,
137- )
138- . await ?;
139-
140- Ok ( data. vault_balance_changes )
141- }
142-
143120 /// Fetch all pages of vault_balance_changes_list query
144121 pub async fn vault_balance_changes_list_all (
145122 & self ,
146123 id : cynic:: Id ,
147124 filter_typenames : Option < & [ String ] > ,
148- ) -> Result < Vec < SgVaultBalanceChangeUnwrapped > , OrderbookSubgraphClientError > {
125+ ) -> Result < Vec < SgVaultBalanceChangeType > , OrderbookSubgraphClientError > {
149126 let mut all_pages_merged = vec ! [ ] ;
150127 let mut page = 1 ;
151128
@@ -174,8 +151,7 @@ impl OrderbookSubgraphClient {
174151mod tests {
175152 use super :: * ;
176153 use crate :: types:: common:: {
177- SgBigInt , SgBytes , SgErc20 , SgOrderAsIO , SgOrderbook , SgTransaction , SgVault ,
178- SgVaultBalanceChangeUnwrapped , SgVaultBalanceChangeVault , SgVaultsListFilterArgs ,
154+ SgBigInt , SgBytes , SgErc20 , SgOrderAsIO , SgOrderbook , SgVault , SgVaultsListFilterArgs ,
179155 } ;
180156 use crate :: utils:: float:: * ;
181157 use cynic:: Id ;
@@ -285,50 +261,35 @@ mod tests {
285261 }
286262 }
287263
288- fn default_sg_transaction ( ) -> SgTransaction {
289- SgTransaction {
290- id : SgBytes ( "0xTransactionId" . to_string ( ) ) ,
291- from : SgBytes ( "0xSenderAddress" . to_string ( ) ) ,
292- block_number : SgBigInt ( "100" . to_string ( ) ) ,
293- timestamp : SgBigInt ( "1700000000" . to_string ( ) ) ,
294- }
295- }
296-
297- fn default_sg_vault_balance_change_vault_ref ( ) -> SgVaultBalanceChangeVault {
298- SgVaultBalanceChangeVault {
299- id : SgBytes ( "0xVaultIdForBalanceChange" . to_string ( ) ) ,
300- vault_id : SgBytes ( "12345" . to_string ( ) ) ,
301- token : default_sg_erc20 ( ) ,
302- }
303- }
304-
305- fn default_sg_vault_balance_change_unwrapped ( ) -> SgVaultBalanceChangeUnwrapped {
306- SgVaultBalanceChangeUnwrapped {
307- __typename : "Deposit" . to_string ( ) ,
308- amount : SgBytes ( F0_5 . as_hex ( ) ) ,
309- new_vault_balance : SgBytes ( F1_5 . as_hex ( ) ) ,
310- old_vault_balance : SgBytes ( F1 . as_hex ( ) ) ,
311- vault : default_sg_vault_balance_change_vault_ref ( ) ,
312- timestamp : SgBigInt ( "1700000100" . to_string ( ) ) ,
313- transaction : default_sg_transaction ( ) ,
314- orderbook : default_sg_orderbook ( ) ,
315- }
316- }
317-
318- fn assert_sg_vault_balance_change_unwrapped_eq (
319- actual : & SgVaultBalanceChangeUnwrapped ,
320- expected : & SgVaultBalanceChangeUnwrapped ,
321- ) {
322- assert_eq ! ( actual. __typename, expected. __typename) ;
323- assert_eq ! ( actual. amount, expected. amount) ;
324- assert_eq ! ( actual. new_vault_balance, expected. new_vault_balance) ;
325- assert_eq ! ( actual. old_vault_balance, expected. old_vault_balance) ;
326- assert_eq ! ( actual. vault. id, expected. vault. id) ;
327- assert_eq ! ( actual. vault. vault_id, expected. vault. vault_id) ;
328- assert_eq ! ( actual. vault. token. id, expected. vault. token. id) ;
329- assert_eq ! ( actual. timestamp, expected. timestamp) ;
330- assert_eq ! ( actual. transaction. id, expected. transaction. id) ;
331- assert_eq ! ( actual. orderbook. id, expected. orderbook. id) ;
264+ fn default_balance_change_json ( ) -> serde_json:: Value {
265+ json ! ( {
266+ "__typename" : "Deposit" ,
267+ "id" : "0xDepositId" ,
268+ "amount" : F0_5 . as_hex( ) ,
269+ "newVaultBalance" : F1_5 . as_hex( ) ,
270+ "oldVaultBalance" : F1 . as_hex( ) ,
271+ "vault" : {
272+ "id" : "0xVaultIdForBalanceChange" ,
273+ "vaultId" : "12345" ,
274+ "token" : {
275+ "id" : "0xTokenId" ,
276+ "address" : "0xTokenAddress" ,
277+ "name" : "Test Token" ,
278+ "symbol" : "TTK" ,
279+ "decimals" : "18"
280+ }
281+ } ,
282+ "timestamp" : "1700000100" ,
283+ "transaction" : {
284+ "id" : "0xTransactionId" ,
285+ "from" : "0xSenderAddress" ,
286+ "blockNumber" : "100" ,
287+ "timestamp" : "1700000000"
288+ } ,
289+ "orderbook" : {
290+ "id" : "0xOrderbookId"
291+ }
292+ } )
332293 }
333294
334295 #[ tokio:: test]
@@ -652,12 +613,12 @@ mod tests {
652613 page : 1 ,
653614 page_size : 10 ,
654615 } ;
655- let expected_changes = vec ! [ default_sg_vault_balance_change_unwrapped ( ) ] ;
616+ let expected_json = vec ! [ default_balance_change_json ( ) ] ;
656617
657618 sg_server. mock ( |when, then| {
658619 when. method ( POST ) . path ( "/" ) . body_contains ( "\" skip\" :0" ) ;
659620 then. status ( 200 )
660- . json_body ( json ! ( { "data" : { "vaultBalanceChanges" : expected_changes } } ) ) ;
621+ . json_body ( json ! ( { "data" : { "vaultBalanceChanges" : expected_json } } ) ) ;
661622 } ) ;
662623 sg_server. mock ( |when, then| {
663624 when. method ( POST ) . path ( "/" ) . body_contains ( "\" skip\" :200" ) ;
@@ -670,10 +631,8 @@ mod tests {
670631 . await ;
671632 assert ! ( result. is_ok( ) , "Result was: {:?}" , result. err( ) ) ;
672633 let changes = result. unwrap ( ) ;
673- assert_eq ! ( changes. len( ) , expected_changes. len( ) ) ;
674- for ( actual, expected) in changes. iter ( ) . zip ( expected_changes. iter ( ) ) {
675- assert_sg_vault_balance_change_unwrapped_eq ( actual, expected) ;
676- }
634+ assert_eq ! ( changes. len( ) , 1 ) ;
635+ assert_eq ! ( changes[ 0 ] . typename( ) , "Deposit" ) ;
677636 }
678637
679638 #[ tokio:: test]
@@ -734,24 +693,17 @@ mod tests {
734693 page_size : 10 ,
735694 } ;
736695
737- let deposit_change = SgVaultBalanceChangeUnwrapped {
738- __typename : "Deposit" . to_string ( ) ,
739- ..default_sg_vault_balance_change_unwrapped ( )
740- } ;
741- let withdrawal_change = SgVaultBalanceChangeUnwrapped {
742- __typename : "Withdrawal" . to_string ( ) ,
743- ..default_sg_vault_balance_change_unwrapped ( )
744- } ;
745- let trade_change = SgVaultBalanceChangeUnwrapped {
746- __typename : "TradeVaultBalanceChange" . to_string ( ) ,
747- ..default_sg_vault_balance_change_unwrapped ( )
748- } ;
749- let all_changes = vec ! [ deposit_change, withdrawal_change, trade_change] ;
696+ let mut deposit_json = default_balance_change_json ( ) ;
697+ deposit_json[ "__typename" ] = json ! ( "Deposit" ) ;
698+ let mut withdrawal_json = default_balance_change_json ( ) ;
699+ withdrawal_json[ "__typename" ] = json ! ( "Withdrawal" ) ;
700+ withdrawal_json[ "id" ] = json ! ( "0xWithdrawalId" ) ;
701+ let all_changes_json = vec ! [ deposit_json, withdrawal_json] ;
750702
751703 sg_server. mock ( |when, then| {
752704 when. method ( POST ) . path ( "/" ) . body_contains ( "\" skip\" :0" ) ;
753705 then. status ( 200 )
754- . json_body ( json ! ( { "data" : { "vaultBalanceChanges" : all_changes } } ) ) ;
706+ . json_body ( json ! ( { "data" : { "vaultBalanceChanges" : all_changes_json } } ) ) ;
755707 } ) ;
756708 sg_server. mock ( |when, then| {
757709 when. method ( POST ) . path ( "/" ) . body_contains ( "\" skip\" :200" ) ;
@@ -766,7 +718,7 @@ mod tests {
766718 assert ! ( result. is_ok( ) , "Result was: {:?}" , result. err( ) ) ;
767719 let changes = result. unwrap ( ) ;
768720 assert_eq ! ( changes. len( ) , 1 ) ;
769- assert_eq ! ( changes[ 0 ] . __typename , "Deposit" ) ;
721+ assert_eq ! ( changes[ 0 ] . typename ( ) , "Deposit" ) ;
770722 }
771723
772724 #[ tokio:: test]
@@ -776,12 +728,11 @@ mod tests {
776728 let vault_id_str = "0xVaultForBalanceChangesAll" ;
777729 let vault_id = Id :: new ( vault_id_str) ;
778730
779- let changes_page1: Vec < SgVaultBalanceChangeUnwrapped > = ( 0 ..ALL_PAGES_QUERY_PAGE_SIZE )
780- . map ( |_| default_sg_vault_balance_change_unwrapped ( ) )
781- . collect ( ) ;
782- let changes_page2: Vec < SgVaultBalanceChangeUnwrapped > = ( 0 ..30 )
783- . map ( |_| default_sg_vault_balance_change_unwrapped ( ) )
731+ let changes_page1: Vec < serde_json:: Value > = ( 0 ..ALL_PAGES_QUERY_PAGE_SIZE )
732+ . map ( |_| default_balance_change_json ( ) )
784733 . collect ( ) ;
734+ let changes_page2: Vec < serde_json:: Value > =
735+ ( 0 ..30 ) . map ( |_| default_balance_change_json ( ) ) . collect ( ) ;
785736
786737 sg_server. mock ( |when, then| {
787738 when. method ( POST )
0 commit comments