From 0bc3bd4f8c9645596de670c682fee1bcae30c569 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 5 Oct 2024 22:48:44 +0000 Subject: [PATCH 1/4] init --- crates/subgraph/src/vol.rs | 18 +++++++++++++++++- .../tables/OrderVaultsVolTable.svelte | 6 +++--- .../tables/OrderVaultsVolTable.test.ts | 6 ++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/crates/subgraph/src/vol.rs b/crates/subgraph/src/vol.rs index 88be5bda1..a88798249 100644 --- a/crates/subgraph/src/vol.rs +++ b/crates/subgraph/src/vol.rs @@ -1,5 +1,5 @@ use crate::types::common::{Erc20, Trade}; -use alloy::primitives::{ruint::ParseError, U256}; +use alloy::primitives::{ruint::ParseError, I256, U256}; use serde::{Deserialize, Serialize}; use std::str::FromStr; use typeshare::typeshare; @@ -16,6 +16,8 @@ pub struct VaultVolume { total_out: U256, #[typeshare(typescript(type = "string"))] total_vol: U256, + #[typeshare(typescript(type = "string"))] + net_vol: I256, } /// Get the vaults volume from array of trades @@ -30,23 +32,28 @@ pub fn get_vaults_vol(trades: &[Trade]) -> Result, ParseError> let amount = U256::from_str(&trade.input_vault_balance_change.amount.0[1..])?; vault_vol.total_out += amount; vault_vol.total_vol += amount; + vault_vol.net_vol -= I256::from_raw(amount); } else { let amount = U256::from_str(&trade.input_vault_balance_change.amount.0)?; vault_vol.total_in += amount; vault_vol.total_vol += amount; + vault_vol.net_vol += I256::from_raw(amount); } } else { let mut total_in = U256::ZERO; let mut total_out = U256::ZERO; let mut total_vol = U256::ZERO; + let mut net_vol = I256::ZERO; if trade.input_vault_balance_change.amount.0.starts_with('-') { let amount = U256::from_str(&trade.input_vault_balance_change.amount.0[1..])?; total_out += amount; total_vol += amount; + net_vol -= I256::from_raw(amount); } else { let amount = U256::from_str(&trade.input_vault_balance_change.amount.0)?; total_in += amount; total_vol += amount; + net_vol += I256::from_raw(amount); } vaults_vol.push(VaultVolume { id: trade.input_vault_balance_change.vault.vault_id.0.clone(), @@ -54,6 +61,7 @@ pub fn get_vaults_vol(trades: &[Trade]) -> Result, ParseError> total_in, total_out, total_vol, + net_vol, }) } if let Some(vault_vol) = vaults_vol.iter_mut().find(|v| { @@ -64,23 +72,28 @@ pub fn get_vaults_vol(trades: &[Trade]) -> Result, ParseError> let amount = U256::from_str(&trade.output_vault_balance_change.amount.0[1..])?; vault_vol.total_out += amount; vault_vol.total_vol += amount; + vault_vol.net_vol -= I256::from_raw(amount); } else { let amount = U256::from_str(&trade.output_vault_balance_change.amount.0)?; vault_vol.total_in += amount; vault_vol.total_vol += amount; + vault_vol.net_vol += I256::from_raw(amount); } } else { let mut total_in = U256::ZERO; let mut total_out = U256::ZERO; let mut total_vol = U256::ZERO; + let mut net_vol = I256::ZERO; if trade.output_vault_balance_change.amount.0.starts_with('-') { let amount = U256::from_str(&trade.output_vault_balance_change.amount.0[1..])?; total_out += amount; total_vol += amount; + net_vol -= I256::from_raw(amount); } else { let amount = U256::from_str(&trade.output_vault_balance_change.amount.0)?; total_in += amount; total_vol += amount; + net_vol += I256::from_raw(amount); } vaults_vol.push(VaultVolume { id: trade.output_vault_balance_change.vault.vault_id.0.clone(), @@ -88,6 +101,7 @@ pub fn get_vaults_vol(trades: &[Trade]) -> Result, ParseError> total_in, total_out, total_vol, + net_vol, }) } } @@ -250,6 +264,7 @@ mod test { total_in: U256::from(5), total_out: U256::from(7), total_vol: U256::from(12), + net_vol: I256::from_str("-2").unwrap(), }, VaultVolume { id: vault_id1.to_string(), @@ -257,6 +272,7 @@ mod test { total_in: U256::from(3), total_out: U256::from(2), total_vol: U256::from(5), + net_vol: I256::from_str("1").unwrap(), }, ]; diff --git a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte index ebb03d80c..2c4dede32 100644 --- a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte +++ b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte @@ -35,7 +35,7 @@ Token In Volume Out Volume - Total Volume + Net Volume @@ -54,8 +54,8 @@ {formatUnits(BigInt(item.totalOut), Number(item.token.decimals ?? 0))} - - {formatUnits(BigInt(item.totalVol), Number(item.token.decimals ?? 0))} + + {formatUnits(BigInt(item.netVol), Number(item.token.decimals ?? 0))} diff --git a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts index 0d9aac703..f5eeba794 100644 --- a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts +++ b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts @@ -45,6 +45,7 @@ const mockVaultsVol: VaultVolume[] = [ totalIn: '1', totalOut: '2', totalVol: '3', + netVol: '-1', }, { id: '2', @@ -58,6 +59,7 @@ const mockVaultsVol: VaultVolume[] = [ totalIn: '2', totalOut: '5', totalVol: '7', + netVol: '-3', }, ]; @@ -105,12 +107,12 @@ test('renders table with correct data', async () => { await waitFor(async () => { // get total vols - const rows = screen.getAllByTestId('total-vol'); + const rows = screen.getAllByTestId('net-vol'); // checking the total vols for (let i = 0; i < mockVaultsVol.length; i++) { const display = formatUnits( - BigInt(mockVaultsVol[i].totalVol), + BigInt(mockVaultsVol[i].netVol), Number(mockVaultsVol[i].token.decimals), ); expect(rows[i]).toHaveTextContent(display.toString()); From ddeea325d35ff3c7ef0de1fd9e9d00eb8d2a0c4f Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sun, 6 Oct 2024 16:54:20 +0000 Subject: [PATCH 2/4] add total vol --- .../src/lib/components/tables/OrderVaultsVolTable.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte index 2c4dede32..a8f575bf1 100644 --- a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte +++ b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.svelte @@ -36,6 +36,7 @@ In Volume Out Volume Net Volume + Total Volume @@ -57,5 +58,8 @@ {formatUnits(BigInt(item.netVol), Number(item.token.decimals ?? 0))} + + {formatUnits(BigInt(item.totalVol), Number(item.token.decimals ?? 0))} + From e75ab038191dbb8ec1412ad3aa27ba204e0699d9 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 12 Oct 2024 02:15:14 +0000 Subject: [PATCH 3/4] Update OrderVaultsVolTable.test.ts --- .../components/tables/OrderVaultsVolTable.test.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts index f5eeba794..6f271cfa1 100644 --- a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts +++ b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts @@ -118,4 +118,18 @@ test('renders table with correct data', async () => { expect(rows[i]).toHaveTextContent(display.toString()); } }); + + await waitFor(async () => { + // get total vols + const rows = screen.getAllByTestId('total-vol'); + + // checking the total vols + for (let i = 0; i < mockVaultsVol.length; i++) { + const display = formatUnits( + BigInt(mockVaultsVol[i].totalVol), + Number(mockVaultsVol[i].token.decimals), + ); + expect(rows[i]).toHaveTextContent(display.toString()); + } + }); }); From 32491a850b65dfb42c23a7dd037029d2491c0165 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 12 Oct 2024 02:15:51 +0000 Subject: [PATCH 4/4] Update OrderVaultsVolTable.test.ts --- .../src/lib/components/tables/OrderVaultsVolTable.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts index 6f271cfa1..678bf1e9e 100644 --- a/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts +++ b/tauri-app/src/lib/components/tables/OrderVaultsVolTable.test.ts @@ -106,10 +106,10 @@ test('renders table with correct data', async () => { }); await waitFor(async () => { - // get total vols + // get net vols const rows = screen.getAllByTestId('net-vol'); - // checking the total vols + // checking the net vols for (let i = 0; i < mockVaultsVol.length; i++) { const display = formatUnits( BigInt(mockVaultsVol[i].netVol),