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

This commit is contained in:
Yousong Zhou
2018-08-08 13:47:56 +00:00
parent 1bf9036c83
commit 16b80dfefb
4 changed files with 23 additions and 8 deletions

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

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

View File

@@ -18,8 +18,15 @@ var HostwireManager *SHostwireManager
func init() {
db.InitManager(func() {
HostwireManager = &SHostwireManager{SHostJointsManager: NewHostJointsManager(SHostwire{},
"hostwires_tbl", "hostwire", "hostwires", WireManager)}
HostwireManager = &SHostwireManager{
SHostJointsManager: NewHostJointsManager(
SHostwire{},
"hostwires_tbl",
"hostwire",
"hostwires",
WireManager,
),
}
})
}

View File

@@ -35,7 +35,16 @@ var StoragecachedimageManager *SStoragecachedimageManager
func init() {
db.InitManager(func() {
StoragecachedimageManager = &SStoragecachedimageManager{SJointResourceBaseManager: db.NewJointResourceBaseManager(SStoragecachedimage{}, "storagecachedimages_tbl", "storagecachedimage", "storagecachedimages", StoragecacheManager, CachedimageManager)}
StoragecachedimageManager = &SStoragecachedimageManager{
SJointResourceBaseManager: db.NewJointResourceBaseManager(
SStoragecachedimage{},
"storagecachedimages_tbl",
"storagecachedimage",
"storagecachedimages",
StoragecacheManager,
CachedimageManager,
),
}
})
}