Skip to content

Commit ae2d185

Browse files
authored
Merge pull request #234 from thirdweb-dev/07-02-return_data_or_aggregations_as_empty_array_if_no_results
return data or aggregations as empty array if no results
2 parents fc32b1f + 60cc6d1 commit ae2d185

File tree

8 files changed

+27
-18
lines changed

8 files changed

+27
-18
lines changed

api/api.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ type QueryResponse struct {
7373
// @Description Metadata for the query response
7474
Meta Meta `json:"meta"`
7575
// @Description Query result data
76-
Data interface{} `json:"data,omitempty"`
76+
Data *interface{} `json:"data,omitempty"`
7777
// @Description Aggregation results
78-
Aggregations []map[string]interface{} `json:"aggregations,omitempty"`
78+
Aggregations *[]map[string]interface{} `json:"aggregations,omitempty"`
7979
}
8080

8181
func writeError(w http.ResponseWriter, message string, code int) {

internal/handlers/blocks_handlers.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func handleBlocksRequest(c *gin.Context) {
8888
api.InternalErrorHandler(c)
8989
return
9090
}
91-
queryResult.Aggregations = aggregatesResult.Aggregates
91+
queryResult.Aggregations = &aggregatesResult.Aggregates
9292
queryResult.Meta.TotalItems = len(aggregatesResult.Aggregates)
9393
} else {
9494
// Retrieve blocks data
@@ -100,7 +100,8 @@ func handleBlocksRequest(c *gin.Context) {
100100
return
101101
}
102102

103-
queryResult.Data = serializeBlocks(blocksResult.Data)
103+
var data interface{} = serializeBlocks(blocksResult.Data)
104+
queryResult.Data = &data
104105
queryResult.Meta.TotalItems = len(blocksResult.Data)
105106
}
106107

internal/handlers/logs_handlers.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ func handleLogsRequest(c *gin.Context) {
168168
api.InternalErrorHandler(c)
169169
return
170170
}
171-
queryResult.Aggregations = aggregatesResult.Aggregates
171+
queryResult.Aggregations = &aggregatesResult.Aggregates
172172
queryResult.Meta.TotalItems = len(aggregatesResult.Aggregates)
173173
} else {
174174
// Retrieve logs data
@@ -180,12 +180,13 @@ func handleLogsRequest(c *gin.Context) {
180180
return
181181
}
182182

183+
var data interface{}
183184
if decodedLogs := decodeLogsIfNeeded(chainId.String(), logsResult.Data, eventABI, config.Cfg.API.AbiDecodingEnabled && queryParams.Decode); decodedLogs != nil {
184-
queryResult.Data = serializeDecodedLogs(decodedLogs)
185+
data = serializeDecodedLogs(decodedLogs)
185186
} else {
186-
queryResult.Data = serializeLogs(logsResult.Data)
187+
data = serializeLogs(logsResult.Data)
187188
}
188-
189+
queryResult.Data = &data
189190
queryResult.Meta.TotalItems = len(logsResult.Data)
190191
}
191192

internal/handlers/search_handlers.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,12 @@ func Search(c *gin.Context) {
8484
return
8585
}
8686

87+
var data interface{} = result
8788
sendJSONResponse(c, api.QueryResponse{
8889
Meta: api.Meta{
8990
ChainId: chainId.Uint64(),
9091
},
91-
Data: result,
92+
Data: &data,
9293
})
9394
}
9495

internal/handlers/token_handlers.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ func GetTokenIdsByType(c *gin.Context) {
128128
return
129129
}
130130

131-
queryResult.Data = serializeTokenIds(balancesResult.Data)
131+
var data interface{} = serializeTokenIds(balancesResult.Data)
132+
queryResult.Data = &data
132133
sendJSONResponse(c, queryResult)
133134
}
134135

@@ -224,7 +225,8 @@ func GetTokenBalancesByType(c *gin.Context) {
224225
api.InternalErrorHandler(c)
225226
return
226227
}
227-
queryResult.Data = serializeBalances(balancesResult.Data)
228+
var data interface{} = serializeBalances(balancesResult.Data)
229+
queryResult.Data = &data
228230
sendJSONResponse(c, queryResult)
229231
}
230232

@@ -313,7 +315,8 @@ func GetTokenHoldersByType(c *gin.Context) {
313315
api.InternalErrorHandler(c)
314316
return
315317
}
316-
queryResult.Data = serializeHolders(balancesResult.Data)
318+
var data interface{} = serializeHolders(balancesResult.Data)
319+
queryResult.Data = &data
317320
sendJSONResponse(c, queryResult)
318321
}
319322

internal/handlers/transactions_handlers.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func handleTransactionsRequest(c *gin.Context) {
187187
api.InternalErrorHandler(c)
188188
return
189189
}
190-
queryResult.Aggregations = aggregatesResult.Aggregates
190+
queryResult.Aggregations = &aggregatesResult.Aggregates
191191
queryResult.Meta.TotalItems = len(aggregatesResult.Aggregates)
192192
} else {
193193
// Retrieve logs data
@@ -199,11 +199,13 @@ func handleTransactionsRequest(c *gin.Context) {
199199
return
200200
}
201201

202+
var data interface{}
202203
if decodedTxs := decodeTransactionsIfNeeded(chainId.String(), transactionsResult.Data, functionABI, config.Cfg.API.AbiDecodingEnabled && queryParams.Decode); decodedTxs != nil {
203-
queryResult.Data = serializeDecodedTransactions(decodedTxs)
204+
data = serializeDecodedTransactions(decodedTxs)
204205
} else {
205-
queryResult.Data = serializeTransactions(transactionsResult.Data)
206+
data = serializeTransactions(transactionsResult.Data)
206207
}
208+
queryResult.Data = &data
207209
queryResult.Meta.TotalItems = len(transactionsResult.Data)
208210
}
209211

internal/handlers/transfer_handlers.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ func GetTokenTransfers(c *gin.Context) {
161161
return
162162
}
163163

164-
queryResult.Data = serializeTransfers(transfersResult.Data)
164+
var data interface{} = serializeTransfers(transfersResult.Data)
165+
queryResult.Data = &data
165166
sendJSONResponse(c, queryResult)
166167
}
167168

internal/storage/clickhouse.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -535,8 +535,8 @@ func (c *ClickHouseConnector) GetAggregations(table string, qf QueryFilter) (Que
535535
columnNames := rows.Columns()
536536
columnTypes := rows.ColumnTypes()
537537

538-
// Collect results
539-
var aggregates []map[string]interface{}
538+
// Collect results - initialize as empty array to ensure we always return an array
539+
aggregates := make([]map[string]interface{}, 0)
540540
for rows.Next() {
541541
values := make([]interface{}, len(columnNames))
542542

0 commit comments

Comments
 (0)