Skip to content

Commit

Permalink
Merge pull request #14 from initia-labs/feat/valid-table-interface
Browse files Browse the repository at this point in the history
Create interface for valid tables
  • Loading branch information
SeUkKim authored Jan 13, 2025
2 parents 1683881 + ea305f6 commit 558c132
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 44 deletions.
17 changes: 3 additions & 14 deletions informative-indexer/db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,25 +135,14 @@ func GetRowCount(ctx context.Context, dbClient Queryable, table string) (int64,
}

func GetRowsToPruneByBlockHeight(ctx context.Context, dbClient Queryable, table string, threshold int64) (pgx.Rows, error) {
if !isValidTableName(table) {
t, ok := ValidTablesMap[table]
if !ok {
return nil, fmt.Errorf("invalid table name: %s", table)
}

var query string
var t interface{}

if table == "transaction_events" {
t = TransactionEvent{}
} else if table == "finalize_block_events" {
t = FinalizeBlockEvent{}
} else if table == "move_events" {
t = MoveEvent{}
}

columns := getColumns(t)

query = fmt.Sprintf("SELECT %s FROM %s WHERE block_height <= $1", strings.Join(columns, ", "), table)

query := fmt.Sprintf("SELECT %s FROM %s WHERE block_height <= $1", strings.Join(columns, ", "), table)
rows, err := QueryRowsWithTimeout(ctx, dbClient, query, threshold)
if err != nil {
return nil, fmt.Errorf("failed to get rows to prune from table %s: %w", table, err)
Expand Down
28 changes: 17 additions & 11 deletions informative-indexer/db/valid_tables.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
package db

var validTableNames = []string{
"transaction_events",
"finalize_block_events",
"move_events",
import "github.com/jackc/pgx/v5"

type ValidTable interface {
Unmarshal(pgx.Rows) (map[string]interface{}, error)
}

var ValidTablesMap = map[string]ValidTable{
"transaction_events": &TransactionEvent{},
"finalize_block_events": &FinalizeBlockEvent{},
"move_events": &MoveEvent{},
}

func isValidTableName(tableName string) bool {
for _, validTable := range validTableNames {
if tableName == validTable {
return true
}
}
return false
_, ok := ValidTablesMap[tableName]
return ok
}

func GetValidTableNames() []string {
return validTableNames
var keys []string
for key := range ValidTablesMap {
keys = append(keys, key)
}
return keys
}
26 changes: 7 additions & 19 deletions informative-indexer/prunner/prunner.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,25 +127,13 @@ func fetchRowsToPrune(ctx context.Context, dbClient db.Queryable, tableName stri

var result []interface{}
for rows.Next() {
var row map[string]interface{}
if tableName == "transaction_events" {
transactionEvent := db.TransactionEvent{}
row, err = transactionEvent.Unmarshal(rows)
if err != nil {
return nil, err
}
} else if tableName == "finalize_block_events" {
blockResult := db.FinalizeBlockEvent{}
row, err = blockResult.Unmarshal(rows)
if err != nil {
return nil, err
}
} else if tableName == "move_events" {
eventResult := db.MoveEvent{}
row, err = eventResult.Unmarshal(rows)
if err != nil {
return nil, err
}
table, ok := db.ValidTablesMap[tableName]
if !ok {
return nil, fmt.Errorf("failed to get table interface from table name %s", tableName)
}
row, err := table.Unmarshal(rows)
if err != nil {
return nil, err
}
result = append(result, row)
}
Expand Down

0 comments on commit 558c132

Please sign in to comment.