diff --git a/entrypoint.go b/entrypoint.go index 96b7ee9..444a2c2 100644 --- a/entrypoint.go +++ b/entrypoint.go @@ -36,8 +36,7 @@ func Init(appName string) { } func GetLogger() zerolog.Logger { - log := logs.GetLogger() - return log + return logs.GetLogger() } func LoadOne(collection LibDataEnum, id string) LibData { @@ -46,7 +45,9 @@ func LoadOne(collection LibDataEnum, id string) LibData { } func UpdateOne(collection LibDataEnum, set map[string]interface{}, id string) LibData { - d, err := models.Model(collection.EnumIndex()).GetAccessor().UpdateOne(set, id) + model := models.Model(collection.EnumIndex()) + set = model.Deserialize(set).Serialize() + d, err := model.GetAccessor().UpdateOne(set, id) return LibData{Data: d, Err: err} } diff --git a/models/resources/data/data.go b/models/resources/data/data.go index 132f15f..3d6cc00 100644 --- a/models/resources/data/data.go +++ b/models/resources/data/data.go @@ -23,6 +23,16 @@ func (dma *Data) Deserialize(j map[string]interface{}) utils.DBObject { return dma } +func (dma *Data) Serialize() map[string]interface{} { + var m map[string]interface{} + b, err := json.Marshal(dma) + if err != nil { + return nil + } + json.Unmarshal(b, dma) + return m +} + func (d *Data) GetType() resources.ResourceType { return resources.DATA } diff --git a/models/resources/datacenter/datacenter.go b/models/resources/datacenter/datacenter.go index 923fcdf..bf1c2f5 100644 --- a/models/resources/datacenter/datacenter.go +++ b/models/resources/datacenter/datacenter.go @@ -46,6 +46,16 @@ func (dma *Datacenter) Deserialize(j map[string]interface{}) utils.DBObject { return dma } +func (dma *Datacenter) Serialize() map[string]interface{} { + var m map[string]interface{} + b, err := json.Marshal(dma) + if err != nil { + return nil + } + json.Unmarshal(b, dma) + return m +} + func (d *Datacenter) GetType() resources.ResourceType { return resources.DATACENTER } diff --git a/models/resources/processing/processing.go b/models/resources/processing/processing.go index 29bc19a..d967193 100644 --- a/models/resources/processing/processing.go +++ b/models/resources/processing/processing.go @@ -40,6 +40,16 @@ func (dma *Processing) Deserialize(j map[string]interface{}) utils.DBObject { return dma } +func (dma *Processing) Serialize() map[string]interface{} { + var m map[string]interface{} + b, err := json.Marshal(dma) + if err != nil { + return nil + } + json.Unmarshal(b, dma) + return m +} + func (p *Processing) GetType() resources.ResourceType { return resources.PROCESSING } diff --git a/models/resources/resource.go b/models/resources/resource.go index 38cd53e..68fb683 100644 --- a/models/resources/resource.go +++ b/models/resources/resource.go @@ -44,14 +44,14 @@ type Resource interface { } type AbstractResource struct { - Uuid string `json:"uuid" required:"true" bson:"uuid"` - Name string `json:"name" required:"true" bson:"name"` - ShortDescription string `json:"short_description" required:"true" bson:"short_description"` + Uuid string `json:"uuid" required:"true" bson:"uuid" validate:"required"` + Name string `json:"name" required:"true" bson:"name" validate:"required"` + ShortDescription string `json:"short_description" required:"true" bson:"short_description" validate:"required"` Description string `json:"description,omitempty" bson:"description"` - Logo string `json:"logo" required:"true" bson:"logo"` - Owner string `json:"owner" required:"true" bson:"owner"` + Logo string `json:"logo" required:"true" bson:"logo" validate:"required"` + Owner string `json:"owner" required:"true" bson:"owner" validate:"required"` OwnerLogo string `json:"owner_logo" required:"true" bson:"owner_logo"` - SourceUrl string `json:"source_url" required:"true" bson:"source_url"` + SourceUrl string `json:"source_url" required:"true" bson:"source_url" validate:"required"` } func (r *AbstractResource) GetID() string { diff --git a/models/resources/storage/storage.go b/models/resources/storage/storage.go index 761a9e9..7cc1e68 100644 --- a/models/resources/storage/storage.go +++ b/models/resources/storage/storage.go @@ -33,6 +33,16 @@ func (dma *Storage) Deserialize(j map[string]interface{}) utils.DBObject { return dma } +func (dma *Storage) Serialize() map[string]interface{} { + var m map[string]interface{} + b, err := json.Marshal(dma) + if err != nil { + return nil + } + json.Unmarshal(b, dma) + return m +} + func (d *Storage) GetAccessor() utils.Accessor { data := &StorageMongoAccessor{} data.SetLogger(resources.STORAGE) diff --git a/models/resources/workflow/workflow.go b/models/resources/workflow/workflow.go index 1c72734..a3caa02 100644 --- a/models/resources/workflow/workflow.go +++ b/models/resources/workflow/workflow.go @@ -37,6 +37,16 @@ func (dma *Workflow) Deserialize(j map[string]interface{}) utils.DBObject { return dma } +func (dma *Workflow) Serialize() map[string]interface{} { + var m map[string]interface{} + b, err := json.Marshal(dma) + if err != nil { + return nil + } + json.Unmarshal(b, dma) + return m +} + func (w *Workflow) isDCLink(link graph.GraphLink) bool { if _, exists := w.Datacenters[link.Destination.ID]; exists { return true diff --git a/models/utils/interfaces.go b/models/utils/interfaces.go index 682fa92..450f098 100644 --- a/models/utils/interfaces.go +++ b/models/utils/interfaces.go @@ -5,6 +5,7 @@ import "cloud.o-forge.io/core/oc-lib/models/resources" type DBObject interface { GetName() string Deserialize(j map[string]interface{}) DBObject + Serialize() map[string]interface{} GetAccessor() Accessor }