refactor getReferences #103

Closed
0xmuralik wants to merge 3 commits from murali/gql into murali/record-attributes
2 changed files with 16 additions and 11 deletions

View File

@ -19,6 +19,9 @@ test/
tests/ tests/
*_test.go *_test.go
# false positive
testutil/network/network.go
# Semgrep rules folder # Semgrep rules folder
.semgrep .semgrep

View File

@ -164,24 +164,26 @@ func GetGQLAuction(auction *auctiontypes.Auction, bids []*auctiontypes.Bid) (*Au
} }
func getReferences(ctx context.Context, resolver QueryResolver, r *registrytypes.RecordType) ([]*Record, error) { func getReferences(ctx context.Context, resolver QueryResolver, r *registrytypes.RecordType) ([]*Record, error) {
ids := getIds(r.Attributes)
return resolver.GetRecordsByIds(ctx, ids)
}
func getIds(obj map[string]interface{}) []string {
var ids []string var ids []string
// #nosec G705 // #nosec G705
for key := range r.Attributes { for key := range obj {
//nolint: all if innerObj, ok := obj[key].(map[string]interface{}); ok {
switch r.Attributes[key].(type) { if _, ok := innerObj["/"]; ok && len(innerObj) == 1 {
case interface{}: if _, ok := innerObj["/"].(string); ok {
if obj, ok := r.Attributes[key].(map[string]interface{}); ok { ids = append(ids, innerObj["/"].(string))
if _, ok := obj["/"]; ok && len(obj) == 1 {
if _, ok := obj["/"].(string); ok {
ids = append(ids, obj["/"].(string))
}
} }
} else {
ids = append(ids, getIds(innerObj)...)
} }
} }
aleem1314 commented 2023-04-03 10:26:38 +00:00 (Migrated from github.com)
Review

Can you add few test cases.

Can you add few test cases.
} }
return ids
return resolver.GetRecordsByIds(ctx, ids)
} }
func getAttributes(r *registrytypes.RecordType) ([]*KeyValue, error) { func getAttributes(r *registrytypes.RecordType) ([]*KeyValue, error) {