@@ -377,60 +377,87 @@ func (d *DataAccessService) GetValidatorDashboardOverview(ctx context.Context, d
377377 return nil
378378 })
379379
380- retrieveRewardsAndEfficiency := func (timeFrame enums.TimePeriod , rewards * t.ClElValue [decimal.Decimal ], apr * t.ClElValue [* float64 ], efficiency * * float64 ) {
381- // Rewards + APR
382- eg .Go (func () error {
383- incomeInfo , err := d .getElClAPR (ctx , dashboardId , - 1 , timeFrame )
384- if err != nil {
385- return err
386- }
387- * rewards = incomeInfo .Rewards
388- * apr = incomeInfo .Apr
389- return nil
390- })
391-
392- // Efficiency
393- eg .Go (func () error {
394- table , err := timeFrame .Table ()
395- if err != nil {
396- return err
397- }
398- ds := goqu .Dialect ("postgres" ).
399- From (goqu .L (fmt .Sprintf (`%s AS r` , table ))).
400- With ("validators" , goqu .L ("(SELECT dashboard_id, validator_index FROM users_val_dashboards_validators WHERE dashboard_id = ?)" , dashboardId .Id )).
401- Select (
402- goqu .L ("SUM(efficiency_dividend::decimal)" ).As ("efficiency_dividend" ),
403- goqu .L ("SUM(efficiency_divisor::decimal)" ).As ("efficiency_divisor" ),
404- )
405-
406- if len (dashboardId .Validators ) == 0 {
407- ds = ds .
408- InnerJoin (goqu .L ("validators v" ), goqu .On (goqu .L ("r.validator_index = v.validator_index" ))).
409- Where (goqu .L ("r.validator_index IN (SELECT validator_index FROM validators)" ))
410- } else {
411- ds = ds .
412- Where (goqu .L ("r.validator_index IN ?" , dashboardId .Validators ))
413- }
380+ retrieveRewards := func (timeFrame enums.TimePeriod ) (rewards t.ClElValue [decimal.Decimal ], apr t.ClElValue [* float64 ], err error ) {
381+ incomeInfo , err := d .getElClAPR (ctx , dashboardId , - 1 , timeFrame )
382+ rewards = incomeInfo .Rewards
383+ apr = incomeInfo .Apr
384+ return
385+ }
414386
415- type dbResult struct {
416- EfficiencyDividend decimal.Decimal `db:"efficiency_dividend"`
417- EfficiencyDivisor decimal.Decimal `db:"efficiency_divisor"`
418- }
419- dbRes , err := runQuery [dbResult ](ctx , d .clickhouseReader , ds )
420- if ! dbRes .EfficiencyDivisor .IsZero () {
421- eff := dbRes .EfficiencyDividend .Div (dbRes .EfficiencyDivisor ).InexactFloat64 ()
422- eff *= 100
423- * efficiency = & eff
424- }
387+ retrieveEfficiency := func (timeFrame enums.TimePeriod ) (efficiency * float64 , err error ) {
388+ table , err := timeFrame .Table ()
389+ if err != nil {
390+ return
391+ }
392+ ds := goqu .Dialect ("postgres" ).
393+ From (goqu .L (fmt .Sprintf (`%s AS r` , table ))).
394+ With ("validators" , goqu .L ("(SELECT dashboard_id, validator_index FROM users_val_dashboards_validators WHERE dashboard_id = ?)" , dashboardId .Id )).
395+ Select (
396+ goqu .L ("SUM(efficiency_dividend::decimal)" ).As ("efficiency_dividend" ),
397+ goqu .L ("SUM(efficiency_divisor::decimal)" ).As ("efficiency_divisor" ),
398+ )
399+
400+ if len (dashboardId .Validators ) == 0 {
401+ ds = ds .
402+ InnerJoin (goqu .L ("validators v" ), goqu .On (goqu .L ("r.validator_index = v.validator_index" ))).
403+ Where (goqu .L ("r.validator_index IN (SELECT validator_index FROM validators)" ))
404+ } else {
405+ ds = ds .
406+ Where (goqu .L ("r.validator_index IN ?" , dashboardId .Validators ))
407+ }
425408
426- return err
427- })
409+ type dbResult struct {
410+ EfficiencyDividend decimal.Decimal `db:"efficiency_dividend"`
411+ EfficiencyDivisor decimal.Decimal `db:"efficiency_divisor"`
412+ }
413+ dbRes , err := runQuery [dbResult ](ctx , d .clickhouseReader , ds )
414+ if ! dbRes .EfficiencyDivisor .IsZero () {
415+ eff := dbRes .EfficiencyDividend .Div (dbRes .EfficiencyDivisor ).InexactFloat64 ()
416+ eff *= 100
417+ efficiency = & eff
418+ }
419+ return
428420 }
429421
430- retrieveRewardsAndEfficiency (enums .Last24h , & data .Rewards .Last24h , & data .Apr .Last24h , & data .Efficiency .Last24h )
431- retrieveRewardsAndEfficiency (enums .Last7d , & data .Rewards .Last7d , & data .Apr .Last7d , & data .Efficiency .Last7d )
432- retrieveRewardsAndEfficiency (enums .Last30d , & data .Rewards .Last30d , & data .Apr .Last30d , & data .Efficiency .Last30d )
433- retrieveRewardsAndEfficiency (enums .AllTime , & data .Rewards .AllTime , & data .Apr .AllTime , & data .Efficiency .AllTime )
422+ // last 24h
423+ eg .Go (func () error {
424+ data .Rewards .Last24h , data .Apr .Last24h , err = retrieveRewards (enums .Last24h )
425+ return err
426+ })
427+ eg .Go (func () error {
428+ data .Efficiency .Last24h , err = retrieveEfficiency (enums .Last24h )
429+ return err
430+ })
431+
432+ // last 7d
433+ eg .Go (func () error {
434+ data .Rewards .Last7d , data .Apr .Last7d , err = retrieveRewards (enums .Last7d )
435+ return err
436+ })
437+ eg .Go (func () error {
438+ data .Efficiency .Last7d , err = retrieveEfficiency (enums .Last7d )
439+ return err
440+ })
441+
442+ // last 30d
443+ eg .Go (func () error {
444+ data .Rewards .Last30d , data .Apr .Last30d , err = retrieveRewards (enums .Last30d )
445+ return err
446+ })
447+ eg .Go (func () error {
448+ data .Efficiency .Last30d , err = retrieveEfficiency (enums .Last30d )
449+ return err
450+ })
451+
452+ // all time
453+ eg .Go (func () error {
454+ data .Rewards .AllTime , data .Apr .AllTime , err = retrieveRewards (enums .AllTime )
455+ return err
456+ })
457+ eg .Go (func () error {
458+ data .Efficiency .AllTime , err = retrieveEfficiency (enums .AllTime )
459+ return err
460+ })
434461
435462 err = eg .Wait ()
436463
0 commit comments