package oclib import ( "fmt" "cloud.o-forge.io/core/oc-lib/dbs/mongo" "cloud.o-forge.io/core/oc-lib/logs" "cloud.o-forge.io/core/oc-lib/models" "cloud.o-forge.io/core/oc-lib/models/resources/data" "cloud.o-forge.io/core/oc-lib/models/resources/datacenter" "cloud.o-forge.io/core/oc-lib/models/resources/processing" "cloud.o-forge.io/core/oc-lib/models/resources/storage" w "cloud.o-forge.io/core/oc-lib/models/resources/workflow" "cloud.o-forge.io/core/oc-lib/models/utils" w2 "cloud.o-forge.io/core/oc-lib/models/workflow" "cloud.o-forge.io/core/oc-lib/models/workflow_execution" "cloud.o-forge.io/core/oc-lib/models/workspace" "github.com/rs/zerolog" ) type LibDataEnum int const ( INVALID LibDataEnum = iota DATA_RESOURCE = utils.DATA_RESOURCE PROCESSING_RESOURCE = utils.PROCESSING_RESOURCE STORAGE_RESOURCE = utils.STORAGE_RESOURCE DATACENTER_RESOURCE = utils.DATACENTER_RESOURCE WORKFLOW_RESOURCE = utils.WORKFLOW_RESOURCE WORKFLOW = utils.WORKFLOW WORKSPACE = utils.WORKSPACE ) func (d LibDataEnum) String() string { return utils.Str[d] } func (d LibDataEnum) EnumIndex() int { return int(d) } type LibDataShallow struct { Data []utils.ShallowDBObject `bson:"data" json:"data"` Code int `bson:"code" json:"code"` Err string `bson:"error" json:"error"` } type LibData struct { Data utils.DBObject `bson:"data" json:"data"` Code int `bson:"code" json:"code"` Err string `bson:"error" json:"error"` } func Init(appName string) { logs.SetAppName(appName) logs.SetLogger(logs.CreateLogger("main", "")) mongo.MONGOService.Init(models.GetModelsNames(), GetConfig()) } func GetLogger() zerolog.Logger { return logs.GetLogger() } func Search(word string, collection LibDataEnum) LibDataShallow { d, code, err := models.Model(collection.EnumIndex()).GetAccessor().Search(word) if err != nil { return LibDataShallow{Data: d, Code: code, Err: err.Error()} } return LibDataShallow{Data: d, Code: code} } func LoadAll(collection LibDataEnum) LibDataShallow { d, code, err := models.Model(collection.EnumIndex()).GetAccessor().LoadAll() if err != nil { return LibDataShallow{Data: d, Code: code, Err: err.Error()} } return LibDataShallow{Data: d, Code: code} } func LoadOne(collection LibDataEnum, id string) LibData { d, code, err := models.Model(collection.EnumIndex()).GetAccessor().LoadOne(id) if err != nil { return LibData{Data: d, Code: code, Err: err.Error()} } return LibData{Data: d, Code: code} } func UpdateOne(collection LibDataEnum, set map[string]interface{}, id string) LibData { model := models.Model(collection.EnumIndex()) d, code, err := model.GetAccessor().UpdateOne(model.Deserialize(set), id) if err != nil { return LibData{Data: d, Code: code, Err: err.Error()} } return LibData{Data: d, Code: code} } func DeleteOne(collection LibDataEnum, id string) LibData { d, code, err := models.Model(collection.EnumIndex()).GetAccessor().DeleteOne(id) if err != nil { return LibData{Data: d, Code: code, Err: err.Error()} } return LibData{Data: d, Code: code} } func StoreOne(collection LibDataEnum, object map[string]interface{}) LibData { model := models.Model(collection.EnumIndex()) fmt.Println(object) d, code, err := model.GetAccessor().StoreOne(model.Deserialize(object)) if err != nil { return LibData{Data: d, Code: code, Err: err.Error()} } return LibData{Data: d, Code: code} } func CopyOne(collection LibDataEnum, object map[string]interface{}) LibData { model := models.Model(collection.EnumIndex()) d, code, err := model.GetAccessor().CopyOne(model.Deserialize(object)) if err != nil { return LibData{Data: d, Code: code, Err: err.Error()} } return LibData{Data: d, Code: code} } // ================ CAST ========================= // func (l *LibData) ToDataResource() *data.DataResource { if l.Data.GetAccessor().GetType() == utils.DATA_RESOURCE.String() { return l.Data.(*data.DataResource) } return nil } func (l *LibData) ToDatacenterResource() *datacenter.DatacenterResource { if l.Data != nil && l.Data.GetAccessor().GetType() == utils.DATACENTER_RESOURCE.String() { return l.Data.(*datacenter.DatacenterResource) } return nil } func (l *LibData) ToStorageResource() *storage.StorageResource { if l.Data.GetAccessor().GetType() == utils.STORAGE_RESOURCE.String() { return l.Data.(*storage.StorageResource) } return nil } func (l *LibData) ToProcessingResource() *processing.ProcessingResource { if l.Data.GetAccessor().GetType() == utils.PROCESSING_RESOURCE.String() { return l.Data.(*processing.ProcessingResource) } return nil } func (l *LibData) ToWorkflowResource() *w.WorkflowResource { if l.Data.GetAccessor().GetType() == utils.WORKFLOW_RESOURCE.String() { return l.Data.(*w.WorkflowResource) } return nil } func (l *LibData) ToWorkflow() *w2.Workflow { if l.Data.GetAccessor().GetType() == utils.WORKFLOW.String() { return l.Data.(*w2.Workflow) } return nil } func (l *LibData) ToWorkspace() *workspace.Workspace { if l.Data.GetAccessor().GetType() == utils.WORKSPACE.String() { return l.Data.(*workspace.Workspace) } return nil } func (l *LibData) ToWorkflowExecution() *workflow_execution.WorkflowExecution { if l.Data.GetAccessor().GetType() == utils.WORKSPACE.String() { return l.Data.(*workflow_execution.WorkflowExecution) } return nil }