2024-06-09 09:31:30 -07:00
|
|
|
package handlers
|
|
|
|
|
|
|
|
import (
|
2024-06-15 12:34:24 -07:00
|
|
|
"fmt"
|
|
|
|
"net/http"
|
|
|
|
|
2024-06-09 09:31:30 -07:00
|
|
|
"github.com/labstack/echo/v4"
|
2024-07-09 17:57:05 -07:00
|
|
|
|
|
|
|
"git.grosinger.net/tgrosinger/saasitone/pkg/services"
|
2024-06-09 09:31:30 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
var handlers []Handler
|
|
|
|
|
|
|
|
// Handler handles one or more HTTP routes
|
|
|
|
type Handler interface {
|
|
|
|
// Routes allows for self-registration of HTTP routes on the router
|
|
|
|
Routes(g *echo.Group)
|
|
|
|
|
|
|
|
// Init provides the service container to initialize
|
|
|
|
Init(*services.Container) error
|
|
|
|
}
|
|
|
|
|
|
|
|
// Register registers a handler
|
|
|
|
func Register(h Handler) {
|
|
|
|
handlers = append(handlers, h)
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetHandlers returns all handlers
|
|
|
|
func GetHandlers() []Handler {
|
|
|
|
return handlers
|
|
|
|
}
|
2024-06-15 12:34:24 -07:00
|
|
|
|
|
|
|
// fail is a helper to fail a request by returning a 500 error and logging the error
|
|
|
|
func fail(err error, log string) error {
|
|
|
|
// The error handler will handle logging
|
|
|
|
return echo.NewHTTPError(http.StatusInternalServerError, fmt.Sprintf("%s: %v", log, err))
|
|
|
|
}
|