state execution^C
This commit is contained in:
parent
14fe694fd3
commit
c24f2f26c4
@ -56,7 +56,9 @@ func (ao *Booking) GetID() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Booking) GenerateID() {
|
func (r *Booking) GenerateID() {
|
||||||
|
if r.UUID == "" {
|
||||||
r.UUID = uuid.New().String()
|
r.UUID = uuid.New().String()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Booking) GetName() string {
|
func (d *Booking) GetName() string {
|
||||||
|
@ -2,6 +2,7 @@ package collaborative_area
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"time"
|
||||||
|
|
||||||
"cloud.o-forge.io/core/oc-lib/models/collaborative_area/rules/rule"
|
"cloud.o-forge.io/core/oc-lib/models/collaborative_area/rules/rule"
|
||||||
"cloud.o-forge.io/core/oc-lib/models/peer"
|
"cloud.o-forge.io/core/oc-lib/models/peer"
|
||||||
@ -12,6 +13,13 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type CollaborativeAreaRule struct {
|
||||||
|
ShareMode string `json:"share_mode,omitempty" bson:"share_mode,omitempty"` // Share is the share of the rule
|
||||||
|
CreatedAt time.Time `json:"created_at,omitempty" bson:"created_at,omitempty"` // CreatedAt is the time the rule was created
|
||||||
|
Creator string `json:"creator,omitempty" bson:"creator,omitempty"` // Creator is the creator of the rule
|
||||||
|
ExploitedBy string `json:"exploited_by,omitempty" bson:"exploited_by,omitempty"` // ExploitedBy is the exploited by of the rule
|
||||||
|
}
|
||||||
|
|
||||||
// SharedWorkspace is a struct that represents a shared workspace
|
// SharedWorkspace is a struct that represents a shared workspace
|
||||||
// WARNING : it got a shallow object version, this one is the full version
|
// WARNING : it got a shallow object version, this one is the full version
|
||||||
// full version is the one used by API
|
// full version is the one used by API
|
||||||
@ -22,6 +30,7 @@ type CollaborativeArea struct {
|
|||||||
CreatorID string `json:"peer_id,omitempty" bson:"peer_id,omitempty" validate:"required"` // CreatorID is the ID of the creator
|
CreatorID string `json:"peer_id,omitempty" bson:"peer_id,omitempty" validate:"required"` // CreatorID is the ID of the creator
|
||||||
Version string `json:"version,omitempty" bson:"version,omitempty"` // Version is the version of the workspace
|
Version string `json:"version,omitempty" bson:"version,omitempty"` // Version is the version of the workspace
|
||||||
Description string `json:"description,omitempty" bson:"description,omitempty" validate:"required"` // Description is the description of the workspace
|
Description string `json:"description,omitempty" bson:"description,omitempty" validate:"required"` // Description is the description of the workspace
|
||||||
|
CollaborativeAreaRule *CollaborativeAreaRule `json:"collaborative_area,omitempty" bson:"collaborative_area,omitempty"` // CollaborativeArea is the collaborative area of the workspace
|
||||||
Attributes map[string]interface{} `json:"attributes,omitempty" bson:"attributes,omitempty"` // Attributes is the attributes of the workspace (TODO)
|
Attributes map[string]interface{} `json:"attributes,omitempty" bson:"attributes,omitempty"` // Attributes is the attributes of the workspace (TODO)
|
||||||
Workspaces []string `json:"workspaces,omitempty" bson:"workspaces,omitempty"` // Workspaces is the workspaces of the workspace
|
Workspaces []string `json:"workspaces,omitempty" bson:"workspaces,omitempty"` // Workspaces is the workspaces of the workspace
|
||||||
Workflows []string `json:"workflows,omitempty" bson:"workflows,omitempty"` // Workflows is the workflows of the workspace
|
Workflows []string `json:"workflows,omitempty" bson:"workflows,omitempty"` // Workflows is the workflows of the workspace
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package collaborative_area
|
package collaborative_area
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"slices"
|
"slices"
|
||||||
|
"time"
|
||||||
|
|
||||||
"cloud.o-forge.io/core/oc-lib/dbs"
|
"cloud.o-forge.io/core/oc-lib/dbs"
|
||||||
"cloud.o-forge.io/core/oc-lib/dbs/mongo"
|
"cloud.o-forge.io/core/oc-lib/dbs/mongo"
|
||||||
@ -208,9 +210,20 @@ func (wfa *collaborativeAreaMongoAccessor) StoreOne(data utils.DBObject) (utils.
|
|||||||
if data.(*CollaborativeArea).Rules == nil {
|
if data.(*CollaborativeArea).Rules == nil {
|
||||||
data.(*CollaborativeArea).Rules = []string{}
|
data.(*CollaborativeArea).Rules = []string{}
|
||||||
}
|
}
|
||||||
|
if data.(*CollaborativeArea).CollaborativeAreaRule == nil {
|
||||||
|
data.(*CollaborativeArea).CollaborativeAreaRule = &CollaborativeAreaRule{
|
||||||
|
ShareMode: "private",
|
||||||
|
ExploitedBy: "collaborators only",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data.(*CollaborativeArea).CollaborativeAreaRule.CreatedAt = time.Now().UTC()
|
||||||
|
// retrieve or proper peer
|
||||||
|
dd, code, err := (&peer.Peer{}).GetAccessor(nil).Search(nil, "0")
|
||||||
|
if code != 200 || len(dd) == 0 {
|
||||||
|
return nil, code, errors.New("Could not retrieve the peer" + err.Error())
|
||||||
|
}
|
||||||
|
data.(*CollaborativeArea).CollaborativeAreaRule.Creator = dd[0].GetID()
|
||||||
d, code, err := wfa.GenericStoreOne(data.(*CollaborativeArea), wfa)
|
d, code, err := wfa.GenericStoreOne(data.(*CollaborativeArea), wfa)
|
||||||
|
|
||||||
if code == 200 {
|
if code == 200 {
|
||||||
wfa.sharedWorkflow(d.(*CollaborativeArea), d.GetID()) // create all shared workflows
|
wfa.sharedWorkflow(d.(*CollaborativeArea), d.GetID()) // create all shared workflows
|
||||||
wfa.sharedWorkspace(d.(*CollaborativeArea), d.GetID()) // create all collaborative areas
|
wfa.sharedWorkspace(d.(*CollaborativeArea), d.GetID()) // create all collaborative areas
|
||||||
|
Loading…
Reference in New Issue
Block a user