diff --git a/models/workspace/workspace_mongo_accessor.go b/models/workspace/workspace_mongo_accessor.go index 1ecce05..37340b9 100644 --- a/models/workspace/workspace_mongo_accessor.go +++ b/models/workspace/workspace_mongo_accessor.go @@ -25,6 +25,17 @@ func (wfa *WorkspaceMongoAccessor) UpdateOne(set utils.DBObject, id string) (uti d.StorageResources = nil d.ProcessingResources = nil d.WorkflowResources = nil + if d.Active { + res, _, err := wfa.LoadAll() + if err == nil { + for _, r := range res { + if r.GetID() != id { + r.(*Workspace).Active = false + wfa.UpdateOne(r.(*Workspace), r.GetID()) + } + } + } + } return wfa.GenericUpdateOne(set, id, wfa, &Workspace{}) } @@ -50,13 +61,7 @@ func (wfa *WorkspaceMongoAccessor) LoadOne(id string) (utils.DBObject, int, erro return nil, code, err } res_mongo.Decode(&workflow) - results, _, err := wfa.LoadAll() - if err == nil && len(results) > 0 { - for _, r := range results { - r.(*Workspace).Active = false - wfa.UpdateOne(&Workspace{Active: false}, r.GetID()) - } - } + obj := &Workspace{Active: true} wfa.UpdateOne(obj, id)