fix: 避免sql erorr

This commit is contained in:
Qu Xuan
2020-06-11 10:41:04 +08:00
parent f441306d80
commit aa0d05ccd4
+14 -9
View File
@@ -165,15 +165,20 @@ func (manager *SDBInstanceSkuManager) ListItemFilter(
q = q.In("engine_version", query.EngineVersion)
}
zones := ZoneManager.Query().SubQuery()
for k, v := range map[string][]string{"zone1": query.Zone1, "zone2": query.Zone2, "zone3": query.Zone3} {
if len(v) > 0 {
q = q.Join(zones, sqlchemy.Equals(zones.Field("id"), q.Field(k))).Filter(
sqlchemy.OR(
sqlchemy.In(zones.Field("name"), v),
sqlchemy.In(zones.Field("id"), v),
),
)
for k, zoneIds := range map[string][]string{"zone1": query.Zone1, "zone2": query.Zone2, "zone3": query.Zone3} {
ids := []string{}
for _, zoneId := range zoneIds {
zone, err := ZoneManager.FetchByIdOrName(userCred, zoneId)
if err != nil {
if errors.Cause(err) == sql.ErrNoRows {
return nil, httperrors.NewResourceNotFoundError2("zone", zoneId)
}
return nil, httperrors.NewGeneralError(err)
}
ids = append(ids, zone.GetId())
}
if len(ids) > 0 {
q = q.In(k, ids)
}
}