forked from tangled.org/core
this repo has no description

appview: add pipelines router

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 6bf1f194 9bea45fe

verified
Changed files
+81
appview
pipelines
state
+58
appview/pipelines/pipelines.go
···
+
package pipelines
+
+
import (
+
"log/slog"
+
"net/http"
+
+
"tangled.sh/tangled.sh/core/appview/config"
+
"tangled.sh/tangled.sh/core/appview/db"
+
"tangled.sh/tangled.sh/core/appview/idresolver"
+
"tangled.sh/tangled.sh/core/appview/oauth"
+
"tangled.sh/tangled.sh/core/appview/pages"
+
"tangled.sh/tangled.sh/core/appview/reporesolver"
+
"tangled.sh/tangled.sh/core/eventconsumer"
+
"tangled.sh/tangled.sh/core/log"
+
"tangled.sh/tangled.sh/core/rbac"
+
+
"github.com/go-chi/chi/v5"
+
"github.com/posthog/posthog-go"
+
)
+
+
type Pipelines struct {
+
repoResolver *reporesolver.RepoResolver
+
idResolver *idresolver.Resolver
+
config *config.Config
+
oauth *oauth.OAuth
+
pages *pages.Pages
+
spindlestream *eventconsumer.Consumer
+
db *db.DB
+
enforcer *rbac.Enforcer
+
posthog posthog.Client
+
Logger *slog.Logger
+
}
+
+
func New(
+
oauth *oauth.OAuth,
+
repoResolver *reporesolver.RepoResolver,
+
pages *pages.Pages,
+
spindlestream *eventconsumer.Consumer,
+
idResolver *idresolver.Resolver,
+
db *db.DB,
+
config *config.Config,
+
posthog posthog.Client,
+
enforcer *rbac.Enforcer,
+
) *Pipelines {
+
logger := log.New("pipelines")
+
+
return &Pipelines{oauth: oauth,
+
repoResolver: repoResolver,
+
pages: pages,
+
idResolver: idResolver,
+
config: config,
+
spindlestream: spindlestream,
+
db: db,
+
posthog: posthog,
+
enforcer: enforcer,
+
Logger: logger,
+
}
+
}
+16
appview/pipelines/router.go
···
+
package pipelines
+
+
import (
+
"net/http"
+
+
"github.com/go-chi/chi/v5"
+
"tangled.sh/tangled.sh/core/appview/middleware"
+
)
+
+
func (p *Pipelines) Router(mw *middleware.Middleware) http.Handler {
+
r := chi.NewRouter()
+
r.Get("/", p.Index)
+
r.Get("/{pipeline}/workflow/{workflow}", p.Workflow)
+
+
return r
+
}
+7
appview/state/router.go
···
"tangled.sh/tangled.sh/core/appview/issues"
"tangled.sh/tangled.sh/core/appview/middleware"
oauthhandler "tangled.sh/tangled.sh/core/appview/oauth/handler"
+
"tangled.sh/tangled.sh/core/appview/pipelines"
"tangled.sh/tangled.sh/core/appview/pulls"
"tangled.sh/tangled.sh/core/appview/repo"
"tangled.sh/tangled.sh/core/appview/settings"
···
r.Mount("/", s.RepoRouter(mw))
r.Mount("/issues", s.IssuesRouter(mw))
r.Mount("/pulls", s.PullsRouter(mw))
+
r.Mount("/pipelines", s.PipelinesRouter(mw))
// These routes get proxied to the knot
r.Get("/info/refs", s.InfoRefs)
···
repo := repo.New(s.oauth, s.repoResolver, s.pages, s.spindlestream, s.idResolver, s.db, s.config, s.posthog, s.enforcer)
return repo.Router(mw)
}
+
+
func (s *State) PipelinesRouter(mw *middleware.Middleware) http.Handler {
+
pipes := pipelines.New(s.oauth, s.repoResolver, s.pages, s.spindlestream, s.idResolver, s.db, s.config, s.posthog, s.enforcer)
+
return pipes.Router(mw)
+
}