You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
// Package serviceboot provides shared service bootstrap helpers.
|
|
package serviceboot
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
|
|
"knowfoolery/backend/shared/infra/utils/envutil"
|
|
)
|
|
|
|
// Config defines basic service runtime settings.
|
|
type Config struct {
|
|
AppName string
|
|
ServiceSlug string
|
|
PortEnv string
|
|
DefaultPort int
|
|
}
|
|
|
|
// NewFiberApp creates a Fiber app with shared defaults.
|
|
func NewFiberApp(cfg Config) *fiber.App {
|
|
return fiber.New(fiber.Config{
|
|
AppName: cfg.AppName,
|
|
})
|
|
}
|
|
|
|
// RegisterHealth registers a standard health endpoint.
|
|
func RegisterHealth(app *fiber.App, serviceSlug string) {
|
|
app.Get("/health", func(c fiber.Ctx) error {
|
|
return c.JSON(fiber.Map{
|
|
"status": "healthy",
|
|
"service": serviceSlug,
|
|
})
|
|
})
|
|
}
|
|
|
|
// ListenAddress resolves the listen port from environment with fallback.
|
|
func ListenAddress(portEnv string, defaultPort int) string {
|
|
port := envutil.Int(portEnv, defaultPort)
|
|
if port < 1 || port > 65535 {
|
|
port = defaultPort
|
|
}
|
|
if port < 1 || port > 65535 {
|
|
port = 8080
|
|
}
|
|
return fmt.Sprintf(":%d", port)
|
|
}
|
|
|
|
// Run starts the Fiber app.
|
|
func Run(app *fiber.App, addr string) error {
|
|
return app.Listen(addr)
|
|
}
|