Massive cleanups on http frontend aspects
This commit is contained in:
@@ -1,17 +1,22 @@
|
||||
package startup
|
||||
|
||||
import "github.com/julienschmidt/httprouter"
|
||||
|
||||
// Pre-defined queues...
|
||||
var (
|
||||
Logger StartupQueue
|
||||
PostFlags StartupQueue
|
||||
Logger Phase
|
||||
// Phase
|
||||
PostFlags Phase
|
||||
Startup Phase
|
||||
Routes ParameterizedPhase[*httprouter.Router]
|
||||
)
|
||||
|
||||
type StartupQueue struct {
|
||||
type Phase struct {
|
||||
items []func()
|
||||
hasRun bool
|
||||
}
|
||||
|
||||
func (q *StartupQueue) Add(initFn ...func()) {
|
||||
func (q *Phase) Add(initFn ...func()) {
|
||||
if q.hasRun {
|
||||
panic("Added init function after startup")
|
||||
}
|
||||
@@ -20,7 +25,7 @@ func (q *StartupQueue) Add(initFn ...func()) {
|
||||
}
|
||||
}
|
||||
|
||||
func (q *StartupQueue) Run() {
|
||||
func (q *Phase) Run() {
|
||||
if q.hasRun {
|
||||
panic("Attempted to run init function twice")
|
||||
}
|
||||
@@ -29,3 +34,27 @@ func (q *StartupQueue) Run() {
|
||||
fn()
|
||||
}
|
||||
}
|
||||
|
||||
type ParameterizedPhase[Param interface{}] struct {
|
||||
items []func(Param)
|
||||
hasRun bool
|
||||
}
|
||||
|
||||
func (q *ParameterizedPhase[Param]) Add(initFn ...func(Param)) {
|
||||
if q.hasRun {
|
||||
panic("Added init function after startup")
|
||||
}
|
||||
for _, fn := range initFn {
|
||||
q.items = append(q.items, fn)
|
||||
}
|
||||
}
|
||||
|
||||
func (q *ParameterizedPhase[Param]) Run(param Param) {
|
||||
if q.hasRun {
|
||||
panic("Attempted to run init function twice")
|
||||
}
|
||||
q.hasRun = true
|
||||
for _, fn := range q.items {
|
||||
fn(param)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user