snapshot of https://github.com/cortezaproject/corteza.git (2024.9.x, 2026-09-18; blobs > 131072B omitted)
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
This commit is contained in:
78
server/pkg/wfexec/graph.go
Normal file
78
server/pkg/wfexec/graph.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package wfexec
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
type (
|
||||
// list of Graph steps with relations
|
||||
Graph struct {
|
||||
steps []Step
|
||||
children map[Step][]Step
|
||||
parents map[Step][]Step
|
||||
index map[uint64]Step
|
||||
}
|
||||
)
|
||||
|
||||
func NewGraph() *Graph {
|
||||
wf := &Graph{
|
||||
steps: make([]Step, 0, 1024),
|
||||
children: make(map[Step][]Step),
|
||||
parents: make(map[Step][]Step),
|
||||
index: make(map[uint64]Step),
|
||||
}
|
||||
|
||||
return wf
|
||||
}
|
||||
|
||||
func (g *Graph) AddStep(s Step, cc ...Step) {
|
||||
g.steps = append(g.steps, s)
|
||||
|
||||
if id := s.ID(); id != 0 {
|
||||
g.index[id] = s
|
||||
}
|
||||
|
||||
if len(cc) > 0 {
|
||||
for _, c := range cc {
|
||||
g.AddParent(c, s)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (g *Graph) Len() int {
|
||||
return len(g.steps)
|
||||
}
|
||||
|
||||
func (g *Graph) StepByID(ID uint64) Step {
|
||||
return g.index[ID]
|
||||
}
|
||||
|
||||
func (g *Graph) AddParent(c, p Step) {
|
||||
g.parents[c] = append(g.parents[c], p)
|
||||
g.children[p] = append(g.children[p], c)
|
||||
}
|
||||
|
||||
func (g *Graph) Children(s Step) Steps {
|
||||
return g.children[s]
|
||||
}
|
||||
|
||||
func (g *Graph) Parents(s Step) Steps {
|
||||
return g.parents[s]
|
||||
}
|
||||
|
||||
func (g *Graph) Exec(context.Context, *ExecRequest) (ExecResponse, error) {
|
||||
// @todo
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (g *Graph) Orphans() (oo Steps) {
|
||||
for _, step := range g.steps {
|
||||
if len(g.Parents(step)) > 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
oo = append(oo, step)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user