From 770a6d194d644fa4432eeb1695b88bcd14c247ca Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Fri, 13 Dec 2019 10:05:29 +0000 Subject: [PATCH] cloudcommon: extend interface for fetching metadata --- pkg/cloudcommon/db/interface.go | 4 ++++ pkg/cloudcommon/db/modelbase.go | 12 ++++++++++++ pkg/cloudcommon/db/opslog.go | 8 ++++++++ pkg/cloudcommon/db/resourcebase.go | 12 ++++++++++++ 4 files changed, 36 insertions(+) diff --git a/pkg/cloudcommon/db/interface.go b/pkg/cloudcommon/db/interface.go index 6283bf8c62..6b1868e725 100644 --- a/pkg/cloudcommon/db/interface.go +++ b/pkg/cloudcommon/db/interface.go @@ -129,6 +129,9 @@ type IModel interface { object.IObject GetName() string + GetUpdateVersion() int + GetUpdatedAt() time.Time + GetDeleted() bool KeywordPlural() string @@ -283,6 +286,7 @@ type IVirtualModelManager interface { type IVirtualModel interface { IStandaloneModel + IPendingDeletable IsOwner(userCred mcclient.TokenCredential) bool // IsAdmin(userCred mcclient.TokenCredential) bool diff --git a/pkg/cloudcommon/db/modelbase.go b/pkg/cloudcommon/db/modelbase.go index 3a2485b6d2..06dd0c1242 100644 --- a/pkg/cloudcommon/db/modelbase.go +++ b/pkg/cloudcommon/db/modelbase.go @@ -412,6 +412,18 @@ func (model *SModelBase) GetName() string { return "" } +func (model *SModelBase) GetUpdatedAt() time.Time { + return time.Time{} +} + +func (model *SModelBase) GetUpdateVersion() int { + return 0 +} + +func (model *SModelBase) GetDeleted() bool { + return false +} + func (model *SModelBase) SetModelManager(man IModelManager, virtual IModel) { model.manager = man model.SetVirtualObject(virtual) diff --git a/pkg/cloudcommon/db/opslog.go b/pkg/cloudcommon/db/opslog.go index 582ec58f59..80ee3977fb 100644 --- a/pkg/cloudcommon/db/opslog.go +++ b/pkg/cloudcommon/db/opslog.go @@ -329,6 +329,14 @@ func (opslog *SOpsLog) GetName() string { return fmt.Sprintf("%s-%s", opslog.ObjType, opslog.Action) } +func (opslog *SOpsLog) GetUpdatedAt() time.Time { + return opslog.OpsTime +} + +func (opslog *SOpsLog) GetUpdateVersion() int { + return 1 +} + func (opslog *SOpsLog) GetModelManager() IModelManager { return OpsLog } diff --git a/pkg/cloudcommon/db/resourcebase.go b/pkg/cloudcommon/db/resourcebase.go index 903cc5503c..e7c39dfc6f 100644 --- a/pkg/cloudcommon/db/resourcebase.go +++ b/pkg/cloudcommon/db/resourcebase.go @@ -128,3 +128,15 @@ func (manager *SResourceBaseManager) ListItemFilter(ctx context.Context, q *sqlc } return q, nil } + +func (model *SResourceBase) GetUpdateVersion() int { + return model.UpdateVersion +} + +func (model *SResourceBase) GetUpdatedAt() time.Time { + return model.UpdatedAt +} + +func (model *SResourceBase) GetDeleted() bool { + return model.Deleted +}