package utils import ( "cloud.o-forge.io/core/oc-lib/dbs" "cloud.o-forge.io/core/oc-lib/tools" "github.com/rs/zerolog" ) // ShallowDBObject is an interface that defines the basic methods shallowed version of a DBObject type ShallowDBObject interface { GenerateID() GetID() string GetName() string Deserialize(j map[string]interface{}, obj DBObject) DBObject Serialize(obj DBObject) map[string]interface{} } // DBObject is an interface that defines the basic methods for a DBObject type DBObject interface { GenerateID() GetID() string GetName() string IsDrafted() bool StoreDraftDefault() CanUpdate(set DBObject) (bool, DBObject) CanDelete() bool UpToDate(user string, create bool) VerifyAuth(request *tools.APIRequest) bool Deserialize(j map[string]interface{}, obj DBObject) DBObject Serialize(obj DBObject) map[string]interface{} GetAccessor(request *tools.APIRequest) Accessor } // Accessor is an interface that defines the basic methods for an Accessor type Accessor interface { GetRequest() *tools.APIRequest GetType() tools.DataType GetUser() string GetPeerID() string GetGroups() []string GetLogger() *zerolog.Logger GetCaller() *tools.HTTPCaller Search(filters *dbs.Filters, search string, isDraft bool) ([]ShallowDBObject, int, error) LoadAll(isDraft bool) ([]ShallowDBObject, int, error) LoadOne(id string) (DBObject, int, error) DeleteOne(id string) (DBObject, int, error) CopyOne(data DBObject) (DBObject, int, error) StoreOne(data DBObject) (DBObject, int, error) UpdateOne(set DBObject, id string) (DBObject, int, error) }