diff --git a/models/meshmodel/core/v1alpha1/category.go b/models/meshmodel/core/v1alpha1/category.go index 492588d5..3ad46d9d 100644 --- a/models/meshmodel/core/v1alpha1/category.go +++ b/models/meshmodel/core/v1alpha1/category.go @@ -25,6 +25,7 @@ type CategoryDB struct { type CategoryFilter struct { Name string OrderOn string + Greedy bool Sort string //asc or desc. Default behavior is asc Limit int //If 0 or unspecified then all records are returned and limit is not used Offset int diff --git a/models/meshmodel/registry.go b/models/meshmodel/registry.go index a6f63f8a..ed293b71 100644 --- a/models/meshmodel/registry.go +++ b/models/meshmodel/registry.go @@ -249,7 +249,11 @@ func (rm *RegistryManager) GetCategories(db *database.Handler, f types.Filter) [ finder := rm.db.Model(&catdb) if mf, ok := f.(*v1alpha1.CategoryFilter); ok { if mf.Name != "" { - finder = finder.Where("name = ?", mf.Name) + if mf.Greedy { + finder = finder.Where("name LIKE ?", mf.Name+"%") + } else { + finder = finder.Where("name = ?", mf.Name) + } } if mf.OrderOn != "" { if mf.Sort == "desc" {