Skip to content

Commit

Permalink
refactor(api) reduce complexity of getGenericObjects()
Browse files Browse the repository at this point in the history
  • Loading branch information
Cedrok committed Aug 9, 2024
1 parent 2c3df86 commit d43033c
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions API/controllers/entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -521,41 +521,41 @@ func getGenericObjects(w http.ResponseWriter, r *http.Request, user *models.Acco
return nil, false
}

nLimit, e := strconv.Atoi(filters.Limit)

// Save entity to help delete and respond
for _, obj := range entData {
obj["entity"] = entStr
if entStr == "device" && strings.Contains(complexFilterExp, "virtual_config.type=node") {
// add namespace prefix to device nodes
obj["id"] = "Physical." + obj["id"].(string)
}
}

if e == nil && nLimit > 0 && req["id"] != nil {
obj["children"], err = models.GetHierarchyByName(entStr, obj["id"].(string), nLimit, filters)
if err != nil {
u.ErrLog("Error while getting "+entStr, "GET "+entStr, err.Message, r)
u.RespondWithError(w, err)
}
}
ok, err := checkChildrenLimit(entData, entStr, filters, req)
if !ok {
u.ErrLog("Error while getting "+entStr, "GET "+entStr, err.Message, r)
u.RespondWithError(w, err)
}

// if nLimit, e := strconv.Atoi(filters.Limit); e == nil && nLimit > 0 && req["id"] != nil {
// // Get children until limit level (only for GET)
// for _, obj := range entData {
// obj["children"], err = models.GetHierarchyByName(entStr, obj["id"].(string), nLimit, filters)
// if err != nil {
// u.ErrLog("Error while getting "+entStr, "GET "+entStr, err.Message, r)
// u.RespondWithError(w, err)
// }
// }
// }
matchingObjects = append(matchingObjects, entData...)
}

return matchingObjects, true
}

func checkChildrenLimit(entData []map[string]interface{}, entStr string, filters u.RequestFilters, req primitive.M) (bool, *u.Error) {
if nLimit, e := strconv.Atoi(filters.Limit); e == nil && nLimit > 0 && req["id"] != nil {
// Get children until limit level (only for GET)
for _, obj := range entData {
var err *u.Error
obj["children"], err = models.GetHierarchyByName(entStr, obj["id"].(string), nLimit, filters)
if err != nil {
return false, err
}
}
}
return true, nil
}

// swagger:operation POST /api/objects/search Objects HandleComplexFilters
// Get all objects from any entity that match the complex filter. Return as a list.
// Wildcards can be used on any of the parameters present in query with equality and inequality operations.
Expand Down

0 comments on commit d43033c

Please sign in to comment.