cloudcommon: db: make master, slave id explict in joint resource base

This commit is contained in:
Yousong Zhou
2018-08-09 04:32:00 +00:00
parent 1bf9036c83
commit 16b80dfefb
4 changed files with 23 additions and 8 deletions
+1 -1
View File
@@ -116,7 +116,7 @@ type IJointModelManager interface {
GetMasterManager() IStandaloneModelManager
GetSlaveManager() IStandaloneModelManager
FetchByIds(id1 string, id2 string) (IJointModel, error)
FetchByIds(masterId string, slaveId string) (IJointModel, error)
AllowListDescendent(ctx context.Context, userCred mcclient.TokenCredential, model IStandaloneModel, query jsonutils.JSONObject) bool
AllowAttach(ctx context.Context, userCred mcclient.TokenCredential, master IStandaloneModel, slave IStandaloneModel) bool
+3 -4
View File
@@ -65,7 +65,7 @@ func (manager *SJointResourceBaseManager) SlaveField(q *sqlchemy.SQuery) sqlchem
return queryField(q, manager.GetSlaveManager())
}
func (manager *SJointResourceBaseManager) FetchByIds(id1 string, id2 string) (IJointModel, error) {
func (manager *SJointResourceBaseManager) FetchByIds(masterId string, slaveId string) (IJointModel, error) {
obj, err := NewModelObject(manager)
if err != nil {
return nil, err
@@ -83,9 +83,8 @@ func (manager *SJointResourceBaseManager) FetchByIds(id1 string, id2 string) (IJ
if slaveField == nil {
return nil, fmt.Errorf("cannot find slave id")
}
cond1 := sqlchemy.AND(sqlchemy.Equals(masterField, id1), sqlchemy.Equals(slaveField, id2))
cond2 := sqlchemy.AND(sqlchemy.Equals(slaveField, id1), sqlchemy.Equals(masterField, id2))
q = q.Filter(sqlchemy.OR(cond1, cond2))
cond := sqlchemy.AND(sqlchemy.Equals(masterField, masterId), sqlchemy.Equals(slaveField, slaveId))
q = q.Filter(cond)
count := q.Count()
if count > 1 {
return nil, sqlchemy.ErrDuplicateEntry