From 1abf60bfbe4d0dcc35b392084e9bf2632a0ccc59 Mon Sep 17 00:00:00 2001 From: Ares <75481906+ice-ares@users.noreply.github.com> Date: Tue, 28 Mar 2023 01:24:53 +0300 Subject: [PATCH] removed logging --- go.mod | 2 +- go.sum | 4 +-- tokenomics/adoption.go | 12 --------- tokenomics/balance.go | 18 ------------- tokenomics/balance_recalculation.go | 10 -------- .../blockchain_balance_synchronization.go | 10 -------- tokenomics/extra_bonus.go | 10 -------- tokenomics/extra_bonus_processing.go | 10 -------- tokenomics/mining.go | 25 ------------------- tokenomics/mining_rates_recalculation.go | 10 -------- tokenomics/mining_sessions.go | 11 -------- tokenomics/pre_staking.go | 21 ---------------- tokenomics/users.go | 10 -------- 13 files changed, 3 insertions(+), 150 deletions(-) diff --git a/go.mod b/go.mod index 07480fa..d2b8a0b 100644 --- a/go.mod +++ b/go.mod @@ -131,7 +131,7 @@ require ( google.golang.org/api v0.114.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/appengine/v2 v2.0.2 // indirect - google.golang.org/genproto v0.0.0-20230327152035-dc694ad2151e // indirect + google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 // indirect google.golang.org/grpc v1.54.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/go.sum b/go.sum index 5e9c66f..40a2bc5 100644 --- a/go.sum +++ b/go.sum @@ -795,8 +795,8 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20230327152035-dc694ad2151e h1:rRGPYd0STm9H4Ci+iGrSLG35mkAKY41/nzCcG7PQADw= -google.golang.org/genproto v0.0.0-20230327152035-dc694ad2151e/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 h1:Kd6tRRHXw8z4TlPlWi+NaK10gsePL6GdZBQChptOLGA= +google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/tokenomics/adoption.go b/tokenomics/adoption.go index f0ec4e5..5bdcb40 100644 --- a/tokenomics/adoption.go +++ b/tokenomics/adoption.go @@ -25,12 +25,6 @@ func (r *repository) GetAdoptionSummary(ctx context.Context) (as *AdoptionSummar if as = new(AdoptionSummary); ctx.Err() != nil { return nil, errors.Wrap(ctx.Err(), "context failed") } - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetAdoptionSummary took: %v", elapsed)) - } - }() key := r.totalActiveUsersGlobalParentKey(time.Now().Time) if as.TotalActiveUsers, err = r.getGlobalUnsignedValue(ctx, key); err != nil && !errors.Is(err, storage.ErrNotFound) { return nil, errors.Wrapf(err, "failed to get totalActiveUsers getGlobalUnsignedValue for key:%v", key) @@ -182,12 +176,6 @@ func (r *repository) getNextAdoption(ctx context.Context) (*Adoption[coin.ICEFla WHERE x.consecutive_durations == :expected_consecutive_durations AND x.achieved_at IS NULL`, strings.Join(keyParams, ","), currentAdoptionSQL()) resp := make([]*Adoption[coin.ICEFlake], 0, 1) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]getNextAdoption SQL took: %v", elapsed)) - } - }() if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { return nil, errors.Wrap(err, "failed to select if the next adoption is achieved") } diff --git a/tokenomics/balance.go b/tokenomics/balance.go index ac9ff94..47c68d7 100644 --- a/tokenomics/balance.go +++ b/tokenomics/balance.go @@ -59,12 +59,6 @@ FROM (SELECT MAX(st.years) AS pre_staking_years, PreStakingAllocation, PreStakingBonus uint64 BalanceWorkerStarted bool }, 0, 1+1+1) - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetBalanceSummary SQL took: %v", elapsed)) - } - }() if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { return nil, errors.Wrapf(err, "failed to select user's balances for user_id:%v", userID) } @@ -145,12 +139,6 @@ func (r *repository) GetBalanceHistory( //nolint:funlen,gocognit,revive,gocyclo, AND type = %[2]v AND type_detail in (%[3]v)`, r.workerIndex(ctx), totalNoPreStakingBonusBalanceType, strings.Join(typeDetails, ",")) res := make([]*balance, 0, 2*len(typeDetails)) //nolint:gomnd // Cuz there's a positive and a negative one. - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetBalanceHistory SQL took: %v", elapsed)) - } - }() if err := r.db.PrepareExecuteTyped(sql, params, &res); err != nil { return nil, errors.Wrapf(err, "failed to select balance history for params:%#v", params) } @@ -442,12 +430,6 @@ func (r *repository) insertOrReplaceBalances( //nolint:revive // Alot of SQL par } sql := fmt.Sprintf(`%v INTO balances_%v (updated_at,user_id,type,type_detail,negative,amount) VALUES %v`, insertOrReplace, workerIndex, strings.Join(values, ",")) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]insert:%v replace balances SQL took: %v", insertOrReplace, elapsed)) - } - }() if _, err := storage.CheckSQLDMLResponse(r.db.Execute(sql)); err != nil { return errors.Wrapf(err, "failed at %v to %v balances:%#v", updatedAt, insertOrReplace, balances) } diff --git a/tokenomics/balance_recalculation.go b/tokenomics/balance_recalculation.go index be4dc1c..1f7f865 100644 --- a/tokenomics/balance_recalculation.go +++ b/tokenomics/balance_recalculation.go @@ -76,10 +76,6 @@ func (s *balanceRecalculationTriggerStreamSource) Process(ignoredCtx context.Con if ignoredCtx.Err() != nil { return errors.Wrap(ignoredCtx.Err(), "unexpected deadline while processing message") } - before2 := time.Now() - defer func() { - log.Info(fmt.Sprintf("[response]balanceRecalculationTriggerStreamSource.Process[%v] took: %v", uint64(msg.Partition), stdlibtime.Since(*before2.Time))) - }() const deadline = 5 * stdlibtime.Minute ctx, cancel := context.WithTimeout(context.Background(), deadline) defer cancel() @@ -206,12 +202,6 @@ FROM (SELECT COUNT(t1.user_id) AS t1, params["previousDurationTypeDetail"] = fmt.Sprintf("/%v", now.Add(-1*s.cfg.GlobalAggregationInterval.Child).Format(s.cfg.globalAggregationIntervalChildDateFormat())) //nolint:lll // . const estimatedBalancesPerUser = 14 resp := make([]*balanceRecalculationRow, 0, balanceRecalculationBatchSize*estimatedBalancesPerUser) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]balanceRecalculation SQL took: %v", elapsed)) - } - }() if err := s.db.PrepareExecuteTyped(sql, params, &resp); err != nil { return nil, errors.Wrapf(err, "failed to select new balance recalculation batch for workerIndex:%v,params:%#v", workerIndex, params) } diff --git a/tokenomics/blockchain_balance_synchronization.go b/tokenomics/blockchain_balance_synchronization.go index 5c9d56a..47fd91b 100644 --- a/tokenomics/blockchain_balance_synchronization.go +++ b/tokenomics/blockchain_balance_synchronization.go @@ -75,10 +75,6 @@ func (s *blockchainBalanceSynchronizationTriggerStreamSource) Process(ignoredCtx if ignoredCtx.Err() != nil { return errors.Wrap(ignoredCtx.Err(), "unexpected deadline while processing message") } - before2 := time.Now() - defer func() { - log.Info(fmt.Sprintf("[response]blockchainBalanceSynchronizationTriggerStreamSource.Process[%v] took: %v", uint64(msg.Partition), stdlibtime.Since(*before2.Time))) - }() const deadline = 5 * stdlibtime.Minute ctx, cancel := context.WithTimeout(context.Background(), deadline) defer cancel() @@ -202,12 +198,6 @@ FROM (SELECT MAX(st.years) AS pre_staking_years, AND b.type = %[4]v AND b.type_detail = ''`, limit, workerIndex, totalNoPreStakingBonusBalanceType, pendingXBalanceType, strings.Join(typeDetails, ",")) res := make([]*latestBalanceSQLRow, 0, limit) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]blockchainSync SQL took: %v", elapsed)) - } - }() if err := s.db.PrepareExecuteTyped(sql, params, &res); err != nil { return nil, errors.Wrapf(err, "failed to select a batch of latest information about latest calculating balances for workerIndex:%v,params:%#v", workerIndex, params) diff --git a/tokenomics/extra_bonus.go b/tokenomics/extra_bonus.go index 18571d7..8395b9f 100644 --- a/tokenomics/extra_bonus.go +++ b/tokenomics/extra_bonus.go @@ -26,11 +26,7 @@ func (r *repository) ClaimExtraBonus(ctx context.Context, ebs *ExtraBonusSummary return errors.Wrap(ctx.Err(), "unexpected deadline") } now := time.Now() - before := time.Now() bonus, err := r.getAvailableExtraBonus(ctx, now, ebs.UserID) - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]getAvailableExtraBonus SQL took: %v", elapsed)) - } if err != nil { return errors.Wrapf(err, "failed to getAvailableExtraBonus for userID:%v", ebs.UserID) } @@ -46,12 +42,6 @@ func (r *repository) ClaimExtraBonus(ctx context.Context, ebs *ExtraBonusSummary extra_bonus_ended_at = :now_nanos + :duration WHERE user_id = :user_id AND :now_nanos - IFNULL(extra_bonus_started_at,0) > :claim_window`, r.workerIndex(ctx)) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]ClaimExtraBonus SQL took: %v", elapsed)) - } - }() if err = storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)); err != nil { if errors.Is(err, storage.ErrNotFound) { err = ErrDuplicate diff --git a/tokenomics/extra_bonus_processing.go b/tokenomics/extra_bonus_processing.go index c3c828c..e485aa7 100644 --- a/tokenomics/extra_bonus_processing.go +++ b/tokenomics/extra_bonus_processing.go @@ -73,10 +73,6 @@ func (s *extraBonusProcessingTriggerStreamSource) Process(ignoredCtx context.Con if ignoredCtx.Err() != nil { return errors.Wrap(ignoredCtx.Err(), "unexpected deadline while processing message") } - before2 := time.Now() - defer func() { - log.Info(fmt.Sprintf("[response]extraBonusProcessingTriggerStreamSource.Process[%v] took: %v", uint64(msg.Partition), stdlibtime.Since(*before2.Time))) - }() const deadline = 5 * stdlibtime.Minute ctx, cancel := context.WithTimeout(context.Background(), deadline) defer cancel() @@ -147,12 +143,6 @@ func (s *extraBonusProcessingTriggerStreamSource) getAvailableExtraBonuses( UserID string NewsSeen, FlatBonus, BonusPercentageRemaining, ExtraBonusIndex uint64 }, 0, extraBonusProcessingBatchSize) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]stream:getAvailableExtraBonuses SQL took: %v", elapsed)) - } - }() if err = s.db.PrepareExecuteTyped(sql, params, &resp); err != nil { return 0, nil, errors.Wrapf(err, "failed to select for availableExtraBonuses for workerIndex:%v", workerIndex) } diff --git a/tokenomics/mining.go b/tokenomics/mining.go index d98743b..a4d7546 100644 --- a/tokenomics/mining.go +++ b/tokenomics/mining.go @@ -12,7 +12,6 @@ import ( "github.com/ice-blockchain/wintr/coin" "github.com/ice-blockchain/wintr/connectors/storage" - "github.com/ice-blockchain/wintr/log" "github.com/ice-blockchain/wintr/time" ) @@ -67,12 +66,6 @@ WHERE user_id = :user_id`, registrationICEFlakeBonusAmount) params := make(map[string]any, 1) params["user_id"] = userID resp := make([]*RankingSummary, 0, 1+1) - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetRankingSummary SQL took: %v", elapsed)) - } - }() if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { return nil, errors.Wrapf(err, "failed to select miner global rank for userID:%v", userID) } @@ -91,20 +84,8 @@ func (r *repository) GetTopMiners(ctx context.Context, keyword string, limit, of return nil, errors.Wrap(ctx.Err(), "unexpected deadline") } if keyword == "" { - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetTopMiners SQL took: %v", elapsed)) - } - }() return r.getTopMiners(ctx, limit, offset) } else { //nolint:revive // Nope. - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetTopMiners[keyword] SQL took: %v", elapsed)) - } - }() return r.getTopMinersByKeyword(ctx, keyword, limit, offset) } } @@ -352,12 +333,6 @@ FROM (SELECT MAX(st.years) AS pre_staking_years, BonusPercentageRemaining uint64 NewsSeen uint64 }, 0, 1) - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetMiningSummary SQL took: %v", elapsed)) - } - }() if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { return nil, errors.Wrapf(err, "failed to select for mining summary for userID:%v", userID) } diff --git a/tokenomics/mining_rates_recalculation.go b/tokenomics/mining_rates_recalculation.go index 3d38f71..bd7fc44 100644 --- a/tokenomics/mining_rates_recalculation.go +++ b/tokenomics/mining_rates_recalculation.go @@ -73,10 +73,6 @@ func (s *miningRatesRecalculationTriggerStreamSource) Process(ignoredCtx context if ignoredCtx.Err() != nil { return errors.Wrap(ignoredCtx.Err(), "unexpected deadline while processing message") } - before2 := time.Now() - defer func() { - log.Info(fmt.Sprintf("[response]miningRatesRecalculationTriggerStreamSource.Process[%v] took: %v", uint64(msg.Partition), stdlibtime.Since(*before2.Time))) - }() const deadline = 5 * stdlibtime.Minute ctx, cancel := context.WithTimeout(context.Background(), deadline) defer cancel() @@ -254,12 +250,6 @@ FROM (SELECT MAX(st.years) AS pre_staking_years, params := make(map[string]any, 1) params["now_nanos"] = now res := make([]*latestMiningRateCalculationSQLRow, 0, miningRatesRecalculationBatchSize) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]stream:miningRates SQL took: %v", elapsed)) - } - }() if err := s.db.PrepareExecuteTyped(sql, params, &res); err != nil { return nil, errors.Wrapf(err, "failed to select a batch of latest user mining rate calculation parameters for workerIndex:%v", workerIndex) } diff --git a/tokenomics/mining_sessions.go b/tokenomics/mining_sessions.go index 9c939bb..5e38082 100644 --- a/tokenomics/mining_sessions.go +++ b/tokenomics/mining_sessions.go @@ -15,7 +15,6 @@ import ( "github.com/ice-blockchain/wintr/coin" messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" - "github.com/ice-blockchain/wintr/log" "github.com/ice-blockchain/wintr/terror" "github.com/ice-blockchain/wintr/time" ) @@ -27,11 +26,7 @@ func (r *repository) StartNewMiningSession( //nolint:funlen,gocognit // A lot of return errors.Wrap(ctx.Err(), "unexpected deadline") } userID := *ms.MiningSession.UserID - before := time.Now() old, err := r.getInternalMiningSummary(ctx, userID) - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]getInternalMiningSummary SQL took: %v", elapsed)) - } if err != nil { return errors.Wrapf(err, "failed to getMiningSummary for userID:%v", userID) } @@ -47,12 +42,6 @@ func (r *repository) StartNewMiningSession( //nolint:funlen,gocognit // A lot of return err } newMS := r.newMiningSummary(old, now) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]insertNewMiningSession SQL took: %v", elapsed)) - } - }() if err = r.insertNewMiningSession(ctx, userID, old, newMS, shouldRollback); err != nil { return errors.Wrapf(err, "failed to insertNewMiningSession:%#v,userID:%v,rollbackNegativeMiningProgress:%v", newMS, userID, shouldRollback) diff --git a/tokenomics/pre_staking.go b/tokenomics/pre_staking.go index a9c6b51..93c2468 100644 --- a/tokenomics/pre_staking.go +++ b/tokenomics/pre_staking.go @@ -5,8 +5,6 @@ package tokenomics import ( "context" "fmt" - stdlibtime "time" - "github.com/goccy/go-json" "github.com/hashicorp/go-multierror" "github.com/pkg/errors" @@ -14,7 +12,6 @@ import ( "github.com/ice-blockchain/go-tarantool-client" messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" "github.com/ice-blockchain/wintr/connectors/storage" - "github.com/ice-blockchain/wintr/log" "github.com/ice-blockchain/wintr/time" ) @@ -35,12 +32,6 @@ func (r *repository) GetPreStakingSummary(ctx context.Context, userID string) (* params := make(map[string]any, 1) params["user_id"] = userID resp := make([]*PreStakingSummary, 0, 1) - before := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]GetPreStakingSummary SQL took: %v", elapsed)) - } - }() if err := r.db.PrepareExecuteTyped(sql, params, &resp); err != nil { return nil, errors.Wrapf(err, "failed to select for pre-staking summary for userID:%v", userID) } @@ -66,12 +57,6 @@ func (r *repository) getAllPreStakingSummaries(ctx context.Context, userID strin ORDER BY st.created_at`, r.workerIndex(ctx)) params := make(map[string]any, 1) params["user_id"] = userID - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]getAllPreStakingSummaries SQL took: %v", elapsed)) - } - }() err = errors.Wrapf(r.db.PrepareExecuteTyped(sql, params, &resp), "failed to select all pre-staking summaries for userID:%v", userID) return @@ -104,12 +89,6 @@ func (r *repository) StartOrUpdatePreStaking(ctx context.Context, st *PreStaking params["user_id"] = st.UserID params["years"] = st.Years params["allocation"] = st.Allocation - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]StartOrUpdatePreStaking SQL took: %v", elapsed)) - } - }() if err = storage.CheckSQLDMLErr(r.db.PrepareExecute(sql, params)); err != nil { return errors.Wrapf(err, "failed to insertNewPreStaking:%#v", st) } diff --git a/tokenomics/users.go b/tokenomics/users.go index 80cd46d..52c629c 100644 --- a/tokenomics/users.go +++ b/tokenomics/users.go @@ -5,8 +5,6 @@ package tokenomics import ( "context" "fmt" - stdlibtime "time" - "github.com/goccy/go-json" "github.com/hashicorp/go-multierror" "github.com/pkg/errors" @@ -16,8 +14,6 @@ import ( "github.com/ice-blockchain/wintr/coin" messagebroker "github.com/ice-blockchain/wintr/connectors/message_broker" "github.com/ice-blockchain/wintr/connectors/storage" - "github.com/ice-blockchain/wintr/log" - "github.com/ice-blockchain/wintr/time" ) func (s *usersTableSource) Process(ctx context.Context, msg *messagebroker.Message) error { //nolint:gocognit // . @@ -115,12 +111,6 @@ func (s *usersTableSource) removeBalanceFromT0AndTMinus1(ctx context.Context, us T0UserID, TMinus1UserID string } res := make([]*resp, 0, 1) - before2 := time.Now() - defer func() { - if elapsed := stdlibtime.Since(*before2.Time); elapsed > 100*stdlibtime.Millisecond { - log.Info(fmt.Sprintf("[response]cleanup_balance_t1_t2 SQL took: %v", elapsed)) - } - }() if err := s.db.PrepareExecuteTyped(sql, params, &res); err != nil { return errors.Wrapf(err, "failed to get reverse t0 and t-1 balance information for userID:%v", usr.ID) }