Skip to content

Commit

Permalink
Fixed linter
Browse files Browse the repository at this point in the history
  • Loading branch information
begmaroman committed Jul 18, 2024
1 parent 275e5b1 commit 9842e62
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 63 deletions.
75 changes: 42 additions & 33 deletions db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,21 +162,7 @@ func (db *pgDB) StoreUnresolvedBatchKeys(ctx context.Context, bks []types.BatchK
return nil
}

const columnsAffected = 2

args := make([]interface{}, len(bks)*columnsAffected)
values := make([]string, len(bks))
for i, bk := range bks {
values[i] = fmt.Sprintf("($%d, $%d)", i*columnsAffected+1, i*columnsAffected+2) //nolint:mnd
args[i*columnsAffected] = bk.Number
args[i*columnsAffected+1] = bk.Hash.Hex()
}

query := fmt.Sprintf(`
INSERT INTO data_node.unresolved_batches (num, hash)
VALUES %s
ON CONFLICT (num, hash) DO NOTHING;
`, strings.Join(values, ","))
query, args := buildBatchKeysInsertQuery(bks)

if _, err := db.pg.ExecContext(ctx, query, args...); err != nil {
return fmt.Errorf("failed to store unresolved batches: %w", err)
Expand Down Expand Up @@ -248,24 +234,7 @@ func (db *pgDB) StoreOffChainData(ctx context.Context, ods []types.OffChainData)
return nil
}

const columnsAffected = 3

args := make([]interface{}, len(ods)*columnsAffected)
values := make([]string, len(ods))
for i, od := range ods {
values[i] = fmt.Sprintf("($%d, $%d, $%d)", i*columnsAffected+1, i*columnsAffected+2, i*columnsAffected+3) //nolint:mnd
args[i*columnsAffected] = od.Key.Hex()
args[i*columnsAffected+1] = common.Bytes2Hex(od.Value)
args[i*columnsAffected+2] = od.BatchNum
}

query := fmt.Sprintf(`
INSERT INTO data_node.offchain_data (key, value, batch_num)
VALUES %s
ON CONFLICT (key) DO UPDATE
SET value = EXCLUDED.value, batch_num = EXCLUDED.batch_num;
`, strings.Join(values, ","))

query, args := buildOffchainDataInsertQuery(ods)
if _, err := db.pg.ExecContext(ctx, query, args...); err != nil {
return fmt.Errorf("failed to store offchain data: %w", err)
}
Expand Down Expand Up @@ -381,3 +350,43 @@ func (db *pgDB) DetectOffchainDataGaps(ctx context.Context) (map[uint64]uint64,

return gaps, nil
}

// buildBatchKeysInsertQuery builds the query to insert unresolved batch keys
func buildBatchKeysInsertQuery(bks []types.BatchKey) (string, []interface{}) {
const columnsAffected = 2

args := make([]interface{}, len(bks)*columnsAffected)
values := make([]string, len(bks))
for i, bk := range bks {
values[i] = fmt.Sprintf("($%d, $%d)", i*columnsAffected+1, i*columnsAffected+2) //nolint:mnd
args[i*columnsAffected] = bk.Number
args[i*columnsAffected+1] = bk.Hash.Hex()
}

return fmt.Sprintf(`
INSERT INTO data_node.unresolved_batches (num, hash)
VALUES %s
ON CONFLICT (num, hash) DO NOTHING;
`, strings.Join(values, ",")), args
}

// buildOffchainDataInsertQuery builds the query to insert offchain data
func buildOffchainDataInsertQuery(ods []types.OffChainData) (string, []interface{}) {
const columnsAffected = 3

args := make([]interface{}, len(ods)*columnsAffected)
values := make([]string, len(ods))
for i, od := range ods {
values[i] = fmt.Sprintf("($%d, $%d, $%d)", i*columnsAffected+1, i*columnsAffected+2, i*columnsAffected+3) //nolint:mnd
args[i*columnsAffected] = od.Key.Hex()
args[i*columnsAffected+1] = common.Bytes2Hex(od.Value)
args[i*columnsAffected+2] = od.BatchNum
}

return fmt.Sprintf(`
INSERT INTO data_node.offchain_data (key, value, batch_num)
VALUES %s
ON CONFLICT (key) DO UPDATE
SET value = EXCLUDED.value, batch_num = EXCLUDED.batch_num;
`, strings.Join(values, ",")), args
}
42 changes: 12 additions & 30 deletions db/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import (
"context"
"database/sql/driver"
"errors"
"fmt"
"regexp"
"strings"
"testing"

"github.com/0xPolygon/cdk-data-availability/types"
Expand Down Expand Up @@ -886,23 +884,14 @@ func seedOffchainData(t *testing.T, db DB, mock sqlmock.Sqlmock, ods []types.Off
return
}

args := make([]driver.Value, len(ods)*3)
values := make([]string, len(ods))
for i, od := range ods {
values[i] = fmt.Sprintf("($%d, $%d, $%d)", i*3+1, i*3+2, i*3+3)
args[i*3] = od.Key.Hex()
args[i*3+1] = common.Bytes2Hex(od.Value)
args[i*3+2] = od.BatchNum
}
query, args := buildOffchainDataInsertQuery(ods)

query := fmt.Sprintf(`
INSERT INTO data_node.offchain_data (key, value, batch_num)
VALUES %s
ON CONFLICT (key) DO UPDATE
SET value = EXCLUDED.value, batch_num = EXCLUDED.batch_num;
`, strings.Join(values, ","))
argValues := make([]driver.Value, len(args))
for i, arg := range args {
argValues[i] = arg
}

mock.ExpectExec(regexp.QuoteMeta(query)).WithArgs(args...).
mock.ExpectExec(regexp.QuoteMeta(query)).WithArgs(argValues...).
WillReturnResult(sqlmock.NewResult(int64(len(ods)), int64(len(ods))))

err := db.StoreOffChainData(context.Background(), ods)
Expand All @@ -916,21 +905,14 @@ func seedUnresolvedBatchKeys(t *testing.T, db DB, mock sqlmock.Sqlmock, bks []ty
return
}

args := make([]driver.Value, len(bks)*2)
values := make([]string, len(bks))
for i, bk := range bks {
values[i] = fmt.Sprintf("($%d, $%d)", i*2+1, i*2+2)
args[i*2] = bk.Number
args[i*2+1] = bk.Hash.Hex()
}
query, args := buildBatchKeysInsertQuery(bks)

query := fmt.Sprintf(`
INSERT INTO data_node.unresolved_batches (num, hash)
VALUES %s
ON CONFLICT (num, hash) DO NOTHING;
`, strings.Join(values, ","))
argValues := make([]driver.Value, len(args))
for i, arg := range args {
argValues[i] = arg
}

mock.ExpectExec(regexp.QuoteMeta(query)).WithArgs(args...).
mock.ExpectExec(regexp.QuoteMeta(query)).WithArgs(argValues...).
WillReturnResult(sqlmock.NewResult(int64(len(bks)), int64(len(bks))))

err := db.StoreUnresolvedBatchKeys(context.Background(), bks)
Expand Down

0 comments on commit 9842e62

Please sign in to comment.