Files
platform/web/web.go

59 lines
995 B
Go

package web
import (
"platform/pkg/env"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/gofiber/fiber/v2/middleware/requestid"
)
import "log/slog"
type Config struct {
Listen string
}
type Server struct {
config *Config
fiber *fiber.App
}
func New(config *Config) (*Server, error) {
_config := config
if config == nil {
_config = &Config{}
}
return &Server{
config: _config,
}, nil
}
func (s *Server) Run() error {
s.fiber = fiber.New(fiber.Config{
ErrorHandler: ErrorHandler,
})
s.fiber.Use(requestid.New())
s.fiber.Use(logger.New())
ApplyRouters(s.fiber)
port := env.AppPort
slog.Info("Server started on :" + port)
err := s.fiber.Listen(":" + port)
if err != nil {
slog.Error("Failed to start server", slog.Any("err", err))
}
slog.Info("Server stopped")
return nil
}
func (s *Server) Stop() {
err := s.fiber.Shutdown()
if err != nil {
slog.Error("Failed to shutdown server", slog.Any("err", err))
}
}