From e89b5aae8469be5ef97e08f1cc9e3453babf10c1 Mon Sep 17 00:00:00 2001 From: mr Date: Fri, 19 Jul 2024 13:41:10 +0200 Subject: [PATCH] test copy --- entrypoint.go | 10 ++++++---- models/resources/data/data.go | 2 -- models/resources/data/data_mongo_accessor.go | 4 ++++ models/resources/datacenter/datacenter.go | 2 -- .../resources/datacenter/datacenter_mongo_accessor.go | 4 ++++ models/resources/processing/processing.go | 2 -- .../resources/processing/processing_mongo_accessor.go | 4 ++++ models/resources/storage/storage.go | 2 -- models/resources/storage/storage_mongo_accessor.go | 4 ++++ models/resources/workflow/workflow.go | 2 -- models/resources/workflow/workflow_mongo_accessor.go | 11 +++++++++++ models/utils/interfaces.go | 2 +- models/workflow/workflow.go | 2 -- models/workflow/workflow_mongo_accessor.go | 4 ++++ 14 files changed, 38 insertions(+), 17 deletions(-) diff --git a/entrypoint.go b/entrypoint.go index dfc3c08..870aebd 100644 --- a/entrypoint.go +++ b/entrypoint.go @@ -30,10 +30,6 @@ type LibData struct { Err string `bson:"error" json:"error"` } -func (lb LibData) BindID(id string) { - lb.DataResource.BindID(id) -} - func Init(appName string) { logs.SetAppName(appName) logs.SetLogger(logs.CreateLogger("main", "")) @@ -61,6 +57,12 @@ func DeleteOne(collection LibDataEnum, id string) LibData { return LibData{DataResource: d, Code: code, Err: err.Error()} } +func CopyOne(collection LibDataEnum, object map[string]interface{}) LibData { + model := models.Model(collection.EnumIndex()) + d, code, err := model.GetAccessor().CopyOne(model.Deserialize(object)) + return LibData{DataResource: d, Code: code, Err: err.Error()} +} + func StoreOne(collection LibDataEnum, object map[string]interface{}) LibData { model := models.Model(collection.EnumIndex()) d, code, err := model.GetAccessor().StoreOne(model.Deserialize(object)) diff --git a/models/resources/data/data.go b/models/resources/data/data.go index e941560..9ff6dc4 100644 --- a/models/resources/data/data.go +++ b/models/resources/data/data.go @@ -14,8 +14,6 @@ type DataResource struct { Example string `json:"example" bson:"example" required:"true" validate:"required" description:"base64 encoded data"` } -func (d *DataResource) BindID(id string) {} - func (dma *DataResource) Deserialize(j map[string]interface{}) utils.DBObject { b, err := json.Marshal(j) if err != nil { diff --git a/models/resources/data/data_mongo_accessor.go b/models/resources/data/data_mongo_accessor.go index f4bebb6..ab8029e 100644 --- a/models/resources/data/data_mongo_accessor.go +++ b/models/resources/data/data_mongo_accessor.go @@ -21,6 +21,10 @@ func (dma *DataMongoAccessor) StoreOne(data utils.DBObject) (utils.DBObject, int return dma.GenericStoreOne(data, dma) } +func (dma *DataMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) { + return dma.GenericStoreOne(data, dma) +} + func (dma *DataMongoAccessor) LoadOne(id string) (utils.DBObject, int, error) { var data DataResource res_mongo, code, err := mongo.MONGOService.LoadOne(id, dma.GetType()) diff --git a/models/resources/datacenter/datacenter.go b/models/resources/datacenter/datacenter.go index 243260f..3c0ccbb 100644 --- a/models/resources/datacenter/datacenter.go +++ b/models/resources/datacenter/datacenter.go @@ -37,8 +37,6 @@ type DatacenterGpuModel struct { TensorCores uint `bson:"tensor_cores,omitempty" json:"tensor_cores,omitempty"` } -func (d *DatacenterResource) BindID(id string) {} - func (dma *DatacenterResource) Deserialize(j map[string]interface{}) utils.DBObject { b, err := json.Marshal(j) if err != nil { diff --git a/models/resources/datacenter/datacenter_mongo_accessor.go b/models/resources/datacenter/datacenter_mongo_accessor.go index 6ebe13c..989a4d1 100644 --- a/models/resources/datacenter/datacenter_mongo_accessor.go +++ b/models/resources/datacenter/datacenter_mongo_accessor.go @@ -21,6 +21,10 @@ func (dca *DatacenterMongoAccessor) StoreOne(data utils.DBObject) (utils.DBObjec return dca.GenericStoreOne(data, dca) } +func (dca *DatacenterMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) { + return dca.GenericStoreOne(data, dca) +} + func (dca *DatacenterMongoAccessor) LoadOne(id string) (utils.DBObject, int, error) { var datacenter DatacenterResource diff --git a/models/resources/processing/processing.go b/models/resources/processing/processing.go index 8032fa3..e08aaf5 100644 --- a/models/resources/processing/processing.go +++ b/models/resources/processing/processing.go @@ -31,8 +31,6 @@ type ExecutionRequirementsModel struct { DiskIO string `bson:"disk_io,omitempty" json:"disk_io,omitempty"` } -func (d *ProcessingResource) BindID(id string) {} - func (dma *ProcessingResource) Deserialize(j map[string]interface{}) utils.DBObject { b, err := json.Marshal(j) if err != nil { diff --git a/models/resources/processing/processing_mongo_accessor.go b/models/resources/processing/processing_mongo_accessor.go index 1a34d98..b3ea324 100644 --- a/models/resources/processing/processing_mongo_accessor.go +++ b/models/resources/processing/processing_mongo_accessor.go @@ -21,6 +21,10 @@ func (pma *ProcessingMongoAccessor) StoreOne(data utils.DBObject) (utils.DBObjec return pma.GenericStoreOne(data, pma) } +func (pma *ProcessingMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) { + return pma.GenericStoreOne(data, pma) +} + func (pma *ProcessingMongoAccessor) LoadOne(id string) (utils.DBObject, int, error) { var processing ProcessingResource diff --git a/models/resources/storage/storage.go b/models/resources/storage/storage.go index db9d3a7..f6e7b90 100644 --- a/models/resources/storage/storage.go +++ b/models/resources/storage/storage.go @@ -24,8 +24,6 @@ type StorageResource struct { BookingPrice uint `bson:"booking_price,omitempty" json:"booking_price,omitempty"` } -func (d *StorageResource) BindID(id string) {} - func (dma *StorageResource) Deserialize(j map[string]interface{}) utils.DBObject { b, err := json.Marshal(j) if err != nil { diff --git a/models/resources/storage/storage_mongo_accessor.go b/models/resources/storage/storage_mongo_accessor.go index 895e262..1d03b04 100644 --- a/models/resources/storage/storage_mongo_accessor.go +++ b/models/resources/storage/storage_mongo_accessor.go @@ -21,6 +21,10 @@ func (sma *StorageMongoAccessor) StoreOne(data utils.DBObject) (utils.DBObject, return sma.GenericStoreOne(data, sma) } +func (sma *StorageMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) { + return sma.GenericStoreOne(data, sma) +} + func (sma *StorageMongoAccessor) LoadOne(id string) (utils.DBObject, int, error) { var storage StorageResource diff --git a/models/resources/workflow/workflow.go b/models/resources/workflow/workflow.go index 6eaa3a9..d1fe583 100644 --- a/models/resources/workflow/workflow.go +++ b/models/resources/workflow/workflow.go @@ -57,8 +57,6 @@ type WorkflowResource struct { WorkflowID string `bson:"workflow_id,omitempty" json:"workflow_id,omitempty"` } -func (d *WorkflowResource) BindID(id string) { d.WorkflowID = id } - func (d *WorkflowResource) GetAccessor() utils.Accessor { data := &WorkflowResourceMongoAccessor{} data.SetLogger(utils.WORKFLOW_RESOURCE) diff --git a/models/resources/workflow/workflow_mongo_accessor.go b/models/resources/workflow/workflow_mongo_accessor.go index dfa1c13..6a2ff82 100644 --- a/models/resources/workflow/workflow_mongo_accessor.go +++ b/models/resources/workflow/workflow_mongo_accessor.go @@ -21,6 +21,17 @@ func (wfa *WorkflowResourceMongoAccessor) StoreOne(data utils.DBObject) (utils.D return wfa.GenericStoreOne(data, wfa) } +func (wfa *WorkflowResourceMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) { + res, _, _ := wfa.LoadOne(data.GetID()) + data.(*WorkflowResource).WorkflowID = data.GetID() + if res == nil { + return wfa.GenericStoreOne(data, wfa) + } else { + data.(*WorkflowResource).UUID = res.GetID() + return wfa.GenericUpdateOne(data.Serialize(), res.GetID(), wfa) + } +} + func (wfa *WorkflowResourceMongoAccessor) LoadOne(id string) (utils.DBObject, int, error) { var workflow WorkflowResource res_mongo, code, err := mongo.MONGOService.LoadOne(id, wfa.GetType()) diff --git a/models/utils/interfaces.go b/models/utils/interfaces.go index 74bcc2c..395b99a 100644 --- a/models/utils/interfaces.go +++ b/models/utils/interfaces.go @@ -3,7 +3,6 @@ package utils type DBObject interface { GenerateID() GetID() string - BindID(id string) GetName() string Deserialize(j map[string]interface{}) DBObject Serialize() map[string]interface{} @@ -15,6 +14,7 @@ type Accessor interface { GetType() string 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 map[string]interface{}, id string) (DBObject, int, error) } diff --git a/models/workflow/workflow.go b/models/workflow/workflow.go index 9d85cb8..a3da99f 100644 --- a/models/workflow/workflow.go +++ b/models/workflow/workflow.go @@ -13,8 +13,6 @@ type Workflow struct { w.AbstractWorkflow } -func (d *Workflow) BindID(id string) {} - func (d *Workflow) GetName() string { return d.Name } diff --git a/models/workflow/workflow_mongo_accessor.go b/models/workflow/workflow_mongo_accessor.go index fb6ffa1..6f52144 100644 --- a/models/workflow/workflow_mongo_accessor.go +++ b/models/workflow/workflow_mongo_accessor.go @@ -21,6 +21,10 @@ func (wfa *WorkflowMongoAccessor) StoreOne(data utils.DBObject) (utils.DBObject, return wfa.GenericStoreOne(data, wfa) } +func (wfa *WorkflowMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) { + return wfa.GenericStoreOne(data, wfa) +} + func (wfa *WorkflowMongoAccessor) LoadOne(id string) (utils.DBObject, int, error) { var workflow Workflow res_mongo, code, err := mongo.MONGOService.LoadOne(id, wfa.GetType())