32 lines
1.1 KiB
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...)
|
|
}
|