mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
fix: 避免sql erorr
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user