Skip to content

Commit 558c132

Browse files
authored
Merge pull request #14 from initia-labs/feat/valid-table-interface
Create interface for valid tables
2 parents 1683881 + ea305f6 commit 558c132

File tree

3 files changed

+27
-44
lines changed

3 files changed

+27
-44
lines changed

informative-indexer/db/db.go

+3-14
Original file line numberDiff line numberDiff line change
@@ -135,25 +135,14 @@ func GetRowCount(ctx context.Context, dbClient Queryable, table string) (int64,
135135
}
136136

137137
func GetRowsToPruneByBlockHeight(ctx context.Context, dbClient Queryable, table string, threshold int64) (pgx.Rows, error) {
138-
if !isValidTableName(table) {
138+
t, ok := ValidTablesMap[table]
139+
if !ok {
139140
return nil, fmt.Errorf("invalid table name: %s", table)
140-
}
141-
142-
var query string
143-
var t interface{}
144141

145-
if table == "transaction_events" {
146-
t = TransactionEvent{}
147-
} else if table == "finalize_block_events" {
148-
t = FinalizeBlockEvent{}
149-
} else if table == "move_events" {
150-
t = MoveEvent{}
151142
}
152143

153144
columns := getColumns(t)
154-
155-
query = fmt.Sprintf("SELECT %s FROM %s WHERE block_height <= $1", strings.Join(columns, ", "), table)
156-
145+
query := fmt.Sprintf("SELECT %s FROM %s WHERE block_height <= $1", strings.Join(columns, ", "), table)
157146
rows, err := QueryRowsWithTimeout(ctx, dbClient, query, threshold)
158147
if err != nil {
159148
return nil, fmt.Errorf("failed to get rows to prune from table %s: %w", table, err)
+17-11
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
package db
22

3-
var validTableNames = []string{
4-
"transaction_events",
5-
"finalize_block_events",
6-
"move_events",
3+
import "github.com/jackc/pgx/v5"
4+
5+
type ValidTable interface {
6+
Unmarshal(pgx.Rows) (map[string]interface{}, error)
7+
}
8+
9+
var ValidTablesMap = map[string]ValidTable{
10+
"transaction_events": &TransactionEvent{},
11+
"finalize_block_events": &FinalizeBlockEvent{},
12+
"move_events": &MoveEvent{},
713
}
814

915
func isValidTableName(tableName string) bool {
10-
for _, validTable := range validTableNames {
11-
if tableName == validTable {
12-
return true
13-
}
14-
}
15-
return false
16+
_, ok := ValidTablesMap[tableName]
17+
return ok
1618
}
1719

1820
func GetValidTableNames() []string {
19-
return validTableNames
21+
var keys []string
22+
for key := range ValidTablesMap {
23+
keys = append(keys, key)
24+
}
25+
return keys
2026
}

informative-indexer/prunner/prunner.go

+7-19
Original file line numberDiff line numberDiff line change
@@ -127,25 +127,13 @@ func fetchRowsToPrune(ctx context.Context, dbClient db.Queryable, tableName stri
127127

128128
var result []interface{}
129129
for rows.Next() {
130-
var row map[string]interface{}
131-
if tableName == "transaction_events" {
132-
transactionEvent := db.TransactionEvent{}
133-
row, err = transactionEvent.Unmarshal(rows)
134-
if err != nil {
135-
return nil, err
136-
}
137-
} else if tableName == "finalize_block_events" {
138-
blockResult := db.FinalizeBlockEvent{}
139-
row, err = blockResult.Unmarshal(rows)
140-
if err != nil {
141-
return nil, err
142-
}
143-
} else if tableName == "move_events" {
144-
eventResult := db.MoveEvent{}
145-
row, err = eventResult.Unmarshal(rows)
146-
if err != nil {
147-
return nil, err
148-
}
130+
table, ok := db.ValidTablesMap[tableName]
131+
if !ok {
132+
return nil, fmt.Errorf("failed to get table interface from table name %s", tableName)
133+
}
134+
row, err := table.Unmarshal(rows)
135+
if err != nil {
136+
return nil, err
149137
}
150138
result = append(result, row)
151139
}

0 commit comments

Comments
 (0)