1
- import { logger , stats } from '@dydxprotocol-indexer/base' ;
1
+ import { stats } from '@dydxprotocol-indexer/base' ;
2
2
import {
3
3
PnlTicksFromDatabase ,
4
- PnlTicksTable ,
5
4
perpetualMarketRefresher ,
6
5
PerpetualMarketFromDatabase ,
7
6
USDC_ASSET_ID ,
@@ -22,7 +21,6 @@ import {
22
21
BlockFromDatabase ,
23
22
FundingIndexUpdatesTable ,
24
23
PnlTickInterval ,
25
- VaultTable ,
26
24
VaultFromDatabase ,
27
25
MEGAVAULT_SUBACCOUNT_ID ,
28
26
TransferFromDatabase ,
@@ -42,10 +40,13 @@ import {
42
40
} from 'tsoa' ;
43
41
44
42
import { getReqRateLimiter } from '../../../caches/rate-limiters' ;
43
+ import { getVaultStartPnl } from '../../../caches/vault-start-pnl' ;
45
44
import config from '../../../config' ;
46
45
import {
47
46
aggregateHourlyPnlTicks ,
48
47
getSubaccountResponse ,
48
+ getVaultMapping ,
49
+ getVaultPnlStartDate ,
49
50
handleControllerError ,
50
51
} from '../../../lib/helpers' ;
51
52
import { rateLimiterMiddleware } from '../../../lib/rate-limit' ;
@@ -108,7 +109,7 @@ class VaultController extends Controller {
108
109
getVaultPositions ( vaultSubaccounts ) ,
109
110
BlockTable . getLatest ( ) ,
110
111
getMainSubaccountEquity ( ) ,
111
- getLatestPnlTick ( vaultSubaccountIdsWithMainSubaccount , _ . values ( vaultSubaccounts ) ) ,
112
+ getLatestPnlTick ( _ . values ( vaultSubaccounts ) ) ,
112
113
getFirstMainVaultTransferDateTime ( ) ,
113
114
] ) ;
114
115
stats . timing (
@@ -162,7 +163,7 @@ class VaultController extends Controller {
162
163
getVaultSubaccountPnlTicks ( _ . keys ( vaultSubaccounts ) , getResolution ( resolution ) ) ,
163
164
getVaultPositions ( vaultSubaccounts ) ,
164
165
BlockTable . getLatest ( ) ,
165
- getLatestPnlTicks ( _ . keys ( vaultSubaccounts ) ) ,
166
+ getLatestPnlTicks ( ) ,
166
167
] ) ;
167
168
const latestTicksBySubaccountId : Dictionary < PnlTicksFromDatabase > = _ . keyBy (
168
169
latestTicks ,
@@ -348,27 +349,13 @@ async function getVaultSubaccountPnlTicks(
348
349
windowSeconds = config . VAULT_PNL_HISTORY_HOURS * 60 * 60 ; // hours to seconds
349
350
}
350
351
351
- const [
352
- pnlTicks ,
353
- adjustByPnlTicks ,
354
- ] : [
355
- PnlTicksFromDatabase [ ] ,
356
- PnlTicksFromDatabase [ ] ,
357
- ] = await Promise . all ( [
358
- VaultPnlTicksView . getVaultsPnl (
359
- resolution ,
360
- windowSeconds ,
361
- getVaultPnlStartDate ( ) ,
362
- ) ,
363
- PnlTicksTable . getLatestPnlTick (
364
- vaultSubaccountIds ,
365
- // Add a buffer of 10 minutes to get the first PnL tick for PnL data as PnL ticks aren't
366
- // created exactly on the hour.
367
- getVaultPnlStartDate ( ) . plus ( { minutes : 10 } ) ,
368
- ) ,
369
- ] ) ;
352
+ const pnlTicks : PnlTicksFromDatabase [ ] = await VaultPnlTicksView . getVaultsPnl (
353
+ resolution ,
354
+ windowSeconds ,
355
+ getVaultPnlStartDate ( ) ,
356
+ ) ;
370
357
371
- return adjustVaultPnlTicks ( pnlTicks , adjustByPnlTicks ) ;
358
+ return adjustVaultPnlTicks ( pnlTicks , getVaultStartPnl ( ) ) ;
372
359
}
373
360
374
361
async function getVaultPositions (
@@ -559,60 +546,26 @@ function getPnlTicksWithCurrentTick(
559
546
return pnlTicks . concat ( [ currentTick ] ) ;
560
547
}
561
548
562
- export async function getLatestPnlTicks (
563
- vaultSubaccountIds : string [ ] ,
564
- ) : Promise < PnlTicksFromDatabase [ ] > {
565
- const [
566
- latestPnlTicks ,
567
- adjustByPnlTicks ,
568
- ] : [
569
- PnlTicksFromDatabase [ ] ,
570
- PnlTicksFromDatabase [ ] ,
571
- ] = await Promise . all ( [
572
- PnlTicksTable . getLatestPnlTick (
573
- vaultSubaccountIds ,
574
- DateTime . now ( ) . toUTC ( ) ,
575
- ) ,
576
- PnlTicksTable . getLatestPnlTick (
577
- vaultSubaccountIds ,
578
- // Add a buffer of 10 minutes to get the first PnL tick for PnL data as PnL ticks aren't
579
- // created exactly on the hour.
580
- getVaultPnlStartDate ( ) . plus ( { minutes : 10 } ) ,
581
- ) ,
582
- ] ) ;
549
+ export async function getLatestPnlTicks ( ) : Promise < PnlTicksFromDatabase [ ] > {
550
+ const latestPnlTicks : PnlTicksFromDatabase [ ] = await VaultPnlTicksView . getLatestVaultPnl ( ) ;
583
551
const adjustedPnlTicks : PnlTicksFromDatabase [ ] = adjustVaultPnlTicks (
584
552
latestPnlTicks ,
585
- adjustByPnlTicks ,
553
+ getVaultStartPnl ( ) ,
586
554
) ;
587
555
return adjustedPnlTicks ;
588
556
}
589
557
590
558
export async function getLatestPnlTick (
591
- vaultSubaccountIds : string [ ] ,
592
559
vaults : VaultFromDatabase [ ] ,
593
560
) : Promise < PnlTicksFromDatabase | undefined > {
594
- const [
595
- pnlTicks ,
596
- adjustByPnlTicks ,
597
- ] : [
598
- PnlTicksFromDatabase [ ] ,
599
- PnlTicksFromDatabase [ ] ,
600
- ] = await Promise . all ( [
601
- VaultPnlTicksView . getVaultsPnl (
602
- PnlTickInterval . hour ,
603
- config . VAULT_LATEST_PNL_TICK_WINDOW_HOURS * 60 * 60 ,
604
- getVaultPnlStartDate ( ) ,
605
- ) ,
606
- PnlTicksTable . getLatestPnlTick (
607
- vaultSubaccountIds ,
608
- // Add a buffer of 10 minutes to get the first PnL tick for PnL data as PnL ticks aren't
609
- // created exactly on the hour.
610
- getVaultPnlStartDate ( ) . plus ( { minutes : 10 } ) ,
611
- ) ,
612
- ] ) ;
561
+ const pnlTicks : PnlTicksFromDatabase [ ] = await VaultPnlTicksView . getVaultsPnl (
562
+ PnlTickInterval . hour ,
563
+ config . VAULT_LATEST_PNL_TICK_WINDOW_HOURS * 60 * 60 ,
564
+ getVaultPnlStartDate ( ) ,
565
+ ) ;
613
566
const adjustedPnlTicks : PnlTicksFromDatabase [ ] = adjustVaultPnlTicks (
614
567
pnlTicks ,
615
- adjustByPnlTicks ,
568
+ getVaultStartPnl ( ) ,
616
569
) ;
617
570
// Aggregate and get pnl tick closest to the hour
618
571
const aggregatedTicks : PnlTicksFromDatabase [ ] = aggregateVaultPnlTicks (
@@ -802,41 +755,4 @@ function adjustVaultPnlTicks(
802
755
} ) ;
803
756
}
804
757
805
- async function getVaultMapping ( ) : Promise < VaultMapping > {
806
- const vaults : VaultFromDatabase [ ] = await VaultTable . findAll (
807
- { } ,
808
- [ ] ,
809
- { } ,
810
- ) ;
811
- const vaultMapping : VaultMapping = _ . zipObject (
812
- vaults . map ( ( vault : VaultFromDatabase ) : string => {
813
- return SubaccountTable . uuid ( vault . address , 0 ) ;
814
- } ) ,
815
- vaults ,
816
- ) ;
817
- const validVaultMapping : VaultMapping = { } ;
818
- for ( const subaccountId of _ . keys ( vaultMapping ) ) {
819
- const perpetual : PerpetualMarketFromDatabase | undefined = perpetualMarketRefresher
820
- . getPerpetualMarketFromClobPairId (
821
- vaultMapping [ subaccountId ] . clobPairId ,
822
- ) ;
823
- if ( perpetual === undefined ) {
824
- logger . warning ( {
825
- at : 'VaultController#getVaultPositions' ,
826
- message : `Vault clob pair id ${ vaultMapping [ subaccountId ] } does not correspond to a ` +
827
- 'perpetual market.' ,
828
- subaccountId,
829
- } ) ;
830
- continue ;
831
- }
832
- validVaultMapping [ subaccountId ] = vaultMapping [ subaccountId ] ;
833
- }
834
- return validVaultMapping ;
835
- }
836
-
837
- function getVaultPnlStartDate ( ) : DateTime {
838
- const startDate : DateTime = DateTime . fromISO ( config . VAULT_PNL_START_DATE ) . toUTC ( ) ;
839
- return startDate ;
840
- }
841
-
842
758
export default router ;
0 commit comments