Files
hatchet/internal/dagutils/cycles.go
T
abelanger5 7c3ddfca32 feat: api server extensions (#614)
* feat: allow extending the api server

* chore: remove internal packages to pkg

* chore: update db_gen.go

* fix: expose auth

* fix: move logger to pkg

* fix: don't generate gitignore for prisma client

* fix: allow extensions to register their own api spec

* feat: expose pool on server config

* fix: nil pointer exception on empty opts

* fix: run.go file
2024-06-19 09:36:13 -04:00

38 lines
705 B
Go

package dagutils
import "github.com/hatchet-dev/hatchet/pkg/repository"
func HasCycle(steps []repository.CreateWorkflowStepOpts) bool {
graph := make(map[string][]string)
for _, step := range steps {
graph[step.ReadableId] = step.Parents
}
visited := make(map[string]bool)
var dfs func(string) bool
dfs = func(node string) bool {
if seen, ok := visited[node]; ok && seen {
return true
}
if _, ok := graph[node]; !ok {
return false
}
visited[node] = true
for _, parent := range graph[node] {
if dfs(parent) {
return true
}
}
visited[node] = false
return false
}
for _, step := range steps {
if dfs(step.ReadableId) {
return true
}
}
return false
}