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)) } }