Skip to content

Commit

Permalink
fix(db): fix db.GetEth2Deposits
Browse files Browse the repository at this point in the history
  • Loading branch information
guybrush committed Jan 16, 2025
1 parent cb863ac commit ee99f89
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ func GetEth2Deposits(query string, length, start uint64, orderDir string) ([]*ty
var err error

// Define the base queries
depositsCountQuery := `SELECT SUM(depositscount) FROM blocks WHERE status = '1' AND depositscount > 0`
depositsCountQuery := `SELECT COALESCE(SUM(depositscount),0) FROM blocks WHERE status = '1' AND depositscount > 0`

depositsQuery := `
SELECT
Expand Down Expand Up @@ -413,12 +413,12 @@ func GetEth2Deposits(query string, length, start uint64, orderDir string) ([]*ty
if trimmedQuery == "" {
err = ReaderDb.Get(&totalCount, depositsCountQuery)
if err != nil {
return nil, 0, err
return nil, 0, fmt.Errorf("error getting totalCount without search: %w", err)
}

err = ReaderDb.Select(&deposits, fmt.Sprintf(depositsQuery, "", orderBy, orderDir), length, start)
if err != nil && err != sql.ErrNoRows {
return nil, 0, err
return nil, 0, fmt.Errorf("error selecting deposits without search: %w", err)
}

return deposits, totalCount, nil
Expand All @@ -428,15 +428,15 @@ func GetEth2Deposits(query string, length, start uint64, orderDir string) ([]*ty
param = hash
searchQuery = `WHERE blocks_deposits.publickey = $3`
depositsCountQuery = `
SELECT SUM(depositscount)
SELECT COALESCE(SUM(depositscount),0)
FROM blocks
INNER JOIN blocks_deposits ON blocks.blockroot = blocks_deposits.block_root AND blocks_deposits.publickey = $1
WHERE status = '1' AND depositscount > 0`
} else if utils.IsValidWithdrawalCredentials(trimmedQuery) {
param = hash
searchQuery = `WHERE blocks_deposits.withdrawalcredentials = $3`
depositsCountQuery = `
SELECT SUM(depositscount)
SELECT COALESCE(SUM(depositscount),0)
FROM blocks
INNER JOIN blocks_deposits ON blocks.blockroot = blocks_deposits.block_root AND blocks_deposits.withdrawalcredentials = $1
WHERE status = '1' AND depositscount > 0`
Expand All @@ -446,15 +446,15 @@ func GetEth2Deposits(query string, length, start uint64, orderDir string) ([]*ty
LEFT JOIN eth1_deposits ON blocks_deposits.publickey = eth1_deposits.publickey
WHERE eth1_deposits.from_address = $3`
depositsCountQuery = `
SELECT SUM(depositscount)
SELECT COALESCE(SUM(depositscount),0)
FROM blocks
INNER JOIN blocks_deposits ON blocks.blockroot = blocks_deposits.block_root AND blocks_deposits.from_address = $1
WHERE status = '1' AND depositscount > 0`
} else if uiQuery, parseErr := strconv.ParseUint(query, 10, 31); parseErr == nil { // Limit to 31 bits to stay within math.MaxInt32
param = uiQuery
searchQuery = `WHERE blocks_deposits.block_slot = $3`
depositsCountQuery = `
SELECT SUM(depositscount)
SELECT COALESCE(SUM(depositscount),0)
FROM blocks
WHERE status = '1' AND depositscount > 0 AND slot = $1`
} else {
Expand All @@ -463,13 +463,13 @@ func GetEth2Deposits(query string, length, start uint64, orderDir string) ([]*ty
}

err = ReaderDb.Get(&totalCount, depositsCountQuery, param)
if err != nil {
return nil, 0, err
if err != nil && err != sql.ErrNoRows {
return nil, 0, fmt.Errorf("error getting totalCount: %w", err)
}

err = ReaderDb.Select(&deposits, fmt.Sprintf(depositsQuery, searchQuery, orderBy, orderDir), length, start, param)
if err != nil && err != sql.ErrNoRows {
return nil, 0, err
return nil, 0, fmt.Errorf("error selecting deposits: %w", err)
}

return deposits, totalCount, nil
Expand Down

0 comments on commit ee99f89

Please sign in to comment.