in api/internal/handler/handler.go [111:149]
func NameExistCheck(ctx context.Context, stg store.Interface, resource, name string, excludeID interface{}) (interface{}, error) {
ret, err := stg.List(ctx, store.ListInput{
Predicate: func(obj interface{}) bool {
var objName string
var objID interface{}
switch resource {
case "route":
objID = obj.(*entity.Route).ID
objName = obj.(*entity.Route).Name
case "service":
objID = obj.(*entity.Service).ID
objName = obj.(*entity.Service).Name
case "upstream":
objID = obj.(*entity.Upstream).ID
objName = obj.(*entity.Upstream).Name
default:
panic("bad resource")
}
if excludeID != nil && objID == excludeID {
return false
}
if objName == name {
return true
}
return false
},
})
if err != nil {
return &data.SpecCodeResponse{StatusCode: http.StatusInternalServerError}, err
}
if ret.TotalSize > 0 {
return &data.SpecCodeResponse{StatusCode: http.StatusBadRequest},
fmt.Errorf("%s name exists", resource)
}
return nil, nil
}