fix(region): listitemfilter ignore empty slice

This commit is contained in:
马鸿飞
2023-06-20 10:28:45 +08:00
parent f46e152d6f
commit 096f09d85a
8 changed files with 27 additions and 0 deletions
+3
View File
@@ -47,6 +47,9 @@ func ListQueryByArchitecture(q *sqlchemy.SQuery, fieldKey string, archs []string
}
conditions := []sqlchemy.ICondition{}
for _, arch := range archs {
if len(arch) == 0 {
continue
}
if arch == apis.OS_ARCH_X86 {
conditions = append(conditions, sqlchemy.OR(
sqlchemy.Startswith(q.Field(fieldKey), arch),
+3
View File
@@ -1703,6 +1703,9 @@ func (manager *SCloudaccountManager) ListItemFilter(
managerStrs := query.CloudproviderId
conditions := []sqlchemy.ICondition{}
for _, managerStr := range managerStrs {
if len(managerStr) == 0 {
continue
}
providerObj, err := manager.FetchByIdOrName(userCred, managerStr)
if err != nil {
if err == sql.ErrNoRows {
+3
View File
@@ -1328,6 +1328,9 @@ func (manager *SCloudproviderManager) ListItemFilter(
managerStrs := query.CloudproviderId
conditions := []sqlchemy.ICondition{}
for _, managerStr := range managerStrs {
if len(managerStr) == 0 {
continue
}
providerObj, err := manager.FetchByIdOrName(userCred, managerStr)
if err != nil {
if err == sql.ErrNoRows {
+3
View File
@@ -238,6 +238,9 @@ func (man *SDBInstanceManager) ListItemFilter(
dn := DBInstanceNetworkManager.Query("dbinstance_id")
conditions := []sqlchemy.ICondition{}
for _, ipAddr := range query.IpAddr {
if len(ipAddr) == 0 {
continue
}
condition := sqlchemy.Contains(dn.Field("ip_addr"), ipAddr)
conditions = append(conditions, condition)
}
+3
View File
@@ -577,6 +577,9 @@ func (manager *SExternalProjectManager) ListItemFilter(
managerStrs := query.CloudproviderId
conditions := []sqlchemy.ICondition{}
for _, managerStr := range managerStrs {
if len(managerStr) == 0 {
continue
}
providerObj, err := manager.FetchByIdOrName(userCred, managerStr)
if err != nil {
if err == sql.ErrNoRows {
+6
View File
@@ -493,6 +493,9 @@ func _managedResourceFilterByAccount(managerIdFieldName string, q *sqlchemy.SQue
cloudproviderStrs := input.CloudproviderId
managerIds := []string{}
for _, cloudproviderStr := range cloudproviderStrs {
if len(cloudproviderStr) == 0 {
continue
}
provider, err := CloudproviderManager.FetchByIdOrName(nil, cloudproviderStr)
if err != nil {
if err == sql.ErrNoRows {
@@ -591,6 +594,9 @@ func managedResourceFilterByZone(q *sqlchemy.SQuery, query api.ZonalFilterListIn
func managedResourceFilterByRegion(q *sqlchemy.SQuery, query api.RegionalFilterListInput, filterField string, subqFunc func() *sqlchemy.SQuery) (*sqlchemy.SQuery, error) {
regionIds := []string{}
for _, region := range query.CloudregionId {
if len(region) == 0 {
continue
}
regionObj, err := ValidateCloudregionId(nil, region)
if err != nil {
return nil, errors.Wrap(err, "ValidateCloudregionResourceInput")
+3
View File
@@ -2151,6 +2151,9 @@ func (manager *SNetworkManager) ListItemFilter(
if len(ips) > 0 {
conditions := []sqlchemy.ICondition{}
for _, ip := range ips {
if len(ip) == 0 {
continue
}
ipIa, err := parseIpToIntArray(ip)
if err != nil {
return nil, err
+3
View File
@@ -163,6 +163,9 @@ func (manager *SVpcResourceBaseManager) ListItemFilter(
var err error
conditions := []sqlchemy.ICondition{}
for _, vpcId := range query.VpcId {
if len(vpcId) == 0 {
continue
}
switch vpcId {
case api.CLASSIC_VPC_NAME:
conditions = append(conditions, sqlchemy.Equals(q.Field("name"), api.CLASSIC_VPC_NAME))