40 lines
886 B
Go
40 lines
886 B
Go
package web
|
|
|
|
import (
|
|
"sort"
|
|
|
|
log "git.tijl.dev/tijl/tijl.dev-core/modules/logger"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
/*
|
|
Basic system for being able to add routes from other packages
|
|
*/
|
|
|
|
type setupFuncWithPriority struct {
|
|
function func(*fiber.App)
|
|
priority int
|
|
}
|
|
|
|
var setupFuncs []setupFuncWithPriority
|
|
|
|
func RegisterAppSetupFunc(function func(*fiber.App), priority int) {
|
|
log.Debug().Msg("web.RegisterAppSetupFunc: registered a function")
|
|
setupFuncs = append(setupFuncs, setupFuncWithPriority{
|
|
function: function,
|
|
priority: priority,
|
|
})
|
|
}
|
|
|
|
// Setup executes all registered functions in order of priority
|
|
func Setup(app *fiber.App) {
|
|
sort.SliceStable(setupFuncs, func(i, j int) bool {
|
|
return setupFuncs[i].priority > setupFuncs[j].priority
|
|
})
|
|
|
|
for _, setupFunc := range setupFuncs {
|
|
// log.Debug().Msg("web.Setup: executing a function")
|
|
setupFunc.function(app)
|
|
}
|
|
}
|