Get on Workspace auto load full data

This commit is contained in:
mr
2024-07-26 10:36:23 +02:00
parent d5c5b454f4
commit 6c83e54d37
15 changed files with 129 additions and 70 deletions

View File

@@ -3,13 +3,14 @@ package workspace
import (
"encoding/json"
"cloud.o-forge.io/core/oc-lib/models/resources"
"cloud.o-forge.io/core/oc-lib/models/utils"
"github.com/google/uuid"
)
type Workspace struct {
utils.AbstractObject
utils.ResourceSet
resources.ResourceSet
Active bool `json:"active" bson:"active" default:"false"`
}

View File

@@ -2,6 +2,11 @@ package workspace
import (
"cloud.o-forge.io/core/oc-lib/dbs/mongo"
"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"
)
@@ -14,11 +19,23 @@ func (wfa *WorkspaceMongoAccessor) DeleteOne(id string) (utils.DBObject, int, er
}
func (wfa *WorkspaceMongoAccessor) UpdateOne(set utils.DBObject, id string) (utils.DBObject, int, error) {
d := set.(*Workspace)
d.DataResources = nil
d.DatacenterResources = nil
d.StorageResources = nil
d.ProcessingResources = nil
d.WorkflowResources = nil
return wfa.GenericUpdateOne(set, id, wfa, &Workspace{})
}
func (wfa *WorkspaceMongoAccessor) StoreOne(data utils.DBObject) (utils.DBObject, int, error) {
return wfa.GenericStoreOne(data, wfa)
d := data.(*Workspace)
d.DataResources = nil
d.DatacenterResources = nil
d.StorageResources = nil
d.ProcessingResources = nil
d.WorkflowResources = nil
return wfa.GenericStoreOne(d, wfa)
}
func (wfa *WorkspaceMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) {
@@ -38,6 +55,51 @@ func (wfa *WorkspaceMongoAccessor) LoadOne(id string) (utils.DBObject, int, erro
obj = &Workspace{Active: true}
wfa.UpdateOne(obj, id)
if workflow.Datas != nil && len(workflow.Datas) > 0 {
dataAccessor := &data.DataMongoAccessor{}
for _, id := range workflow.Datas {
d, _, e := dataAccessor.LoadOne(id)
if e == nil {
workflow.DataResources = append(workflow.DataResources, d.(*data.DataResource))
}
}
}
if workflow.Datacenters != nil && len(workflow.Datacenters) > 0 {
dataAccessor := &datacenter.DatacenterMongoAccessor{}
for _, id := range workflow.Datacenters {
d, _, e := dataAccessor.LoadOne(id)
if e == nil {
workflow.DatacenterResources = append(workflow.DatacenterResources, d.(*datacenter.DatacenterResource))
}
}
}
if workflow.Storages != nil && len(workflow.Storages) > 0 {
dataAccessor := &storage.StorageMongoAccessor{}
for _, id := range workflow.Storages {
d, _, e := dataAccessor.LoadOne(id)
if e == nil {
workflow.StorageResources = append(workflow.StorageResources, d.(*storage.StorageResource))
}
}
}
if workflow.Processings != nil && len(workflow.Processings) > 0 {
dataAccessor := &processing.ProcessingMongoAccessor{}
for _, id := range workflow.Processings {
d, _, e := dataAccessor.LoadOne(id)
if e == nil {
workflow.ProcessingResources = append(workflow.ProcessingResources, d.(*processing.ProcessingResource))
}
}
}
if workflow.Workflows != nil && len(workflow.Workflows) > 0 {
dataAccessor := &w.WorkflowResourceMongoAccessor{}
for _, id := range workflow.Workflows {
d, _, e := dataAccessor.LoadOne(id)
if e == nil {
workflow.WorkflowResources = append(workflow.WorkflowResources, d.(*w.WorkflowResource))
}
}
}
return &workflow, 200, nil
}