54 lines
1006 B
Go
54 lines
1006 B
Go
package server
|
|
|
|
import (
|
|
"acc-server-manager/local/api"
|
|
"acc-server-manager/local/utl/logging"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/cors"
|
|
"github.com/gofiber/swagger"
|
|
"go.uber.org/dig"
|
|
)
|
|
|
|
func Start(di *dig.Container) *fiber.App {
|
|
// Initialize logger
|
|
logger, err := logging.Initialize()
|
|
if err != nil {
|
|
fmt.Printf("Failed to initialize logger: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
defer logger.Close()
|
|
|
|
// Set up panic recovery
|
|
defer logging.RecoverAndLog()
|
|
|
|
app := fiber.New(fiber.Config{
|
|
EnablePrintRoutes: true,
|
|
})
|
|
|
|
app.Use(cors.New())
|
|
|
|
app.Get("/swagger/*", swagger.HandlerDefault)
|
|
|
|
api.Init(di, app)
|
|
|
|
app.Get("/ping", func(c *fiber.Ctx) error {
|
|
return c.SendString("pong")
|
|
})
|
|
|
|
port := os.Getenv("PORT")
|
|
if port == "" {
|
|
port = "3000" // Default port
|
|
}
|
|
|
|
logging.Info("Starting server on port %s", port)
|
|
if err := app.Listen(":" + port); err != nil {
|
|
logging.Error("Failed to start server: %v", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
return app
|
|
}
|