kra-new/internal/app/runtime.go

32 lines
1.1 KiB
Go

// Package app is the composition root for the running administration service.
// It wires runtime objects that need constructed dependencies. Static module
// declarations live in the sibling internal/modules package.
package app
import (
"kra/pkg/module"
platformtask "kra/pkg/task"
)
// TaskRegistry builds the process-wide registry from dependency-free module
// contributions. Dependency-bearing methods are added by their module runtime
// constructors after the usecases have been created.
func TaskRegistry(catalog module.Catalog) *platformtask.Registry {
registry := platformtask.NewRegistry()
registry.RegisterAll(catalog.TaskMethods())
return registry
}
// Composition groups runtime objects that need constructed dependencies. The
// binary composition root supplies the concrete modules.
type Composition struct {
Routes []module.RouteRegistrar
Tasks []platformtask.Contributor
}
// Build activates dependency-bearing tasks and composes module routes.
func Build(contributions Composition, registry *platformtask.Registry) *module.Runtime {
platformtask.Apply(registry, contributions.Tasks...)
return module.NewRuntime(contributions.Routes...)
}