Files
17th-UnitTracker-API/api/main.go
2024-02-28 11:14:48 -08:00

95 lines
2.3 KiB
Go

package main
import (
"net/http"
"time"
"gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/17th-UnitTracker-API/logger"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/rs/zerolog"
"gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/17th-UnitTracker-API/db"
"gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/17th-UnitTracker-API/routes"
)
func main() {
var err error
// err = godotenv.Load(".env")
// if err != nil {
// logger.Log.Warn().Err(err).Msg("Error loading .env file")
// }
e := echo.New()
// Set up logging
zerolog.TimeFieldFormat = time.RFC3339
logger.Log = logger.Log.Level(zerolog.TraceLevel)
// logger.Log = logger.Log.Level(zerolog.DebugLevel)
// logger.Log = logger.Log.Level(zerolog.InfoLevel)
logger.Log.Info().Msg("Logger initialized")
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
err = LoadConfig()
if err != nil {
logger.Log.Fatal().Err(err).Msg("Error loading configuration")
} else {
logger.Log.Info().Msg("Configuration loaded")
}
// Connect to the database
_, err = db.GetDB()
if err != nil {
logger.Log.Fatal().Err(err).Msg("Error connecting to the database")
} else {
logger.Log.Info().Msg("Connected to the database")
}
// Middleware
e.Use(middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{
LogLatency: true,
LogURIPath: true,
LogMethod: true,
LogReferer: true,
LogUserAgent: true,
LogContentLength: true,
LogError: true,
LogRemoteIP: true,
LogURI: true,
LogStatus: true,
LogHost: true,
LogRoutePath: true,
LogRequestID: true,
LogValuesFunc: func(c echo.Context, v middleware.RequestLoggerValues) error {
logger.Log.Trace().
Caller().
Interface("RequestLoggerValues", v).
Send()
return nil
},
}))
e.Use(middleware.SecureWithConfig(middleware.SecureConfig{
XSSProtection: "",
ContentTypeNosniff: "",
XFrameOptions: "",
HSTSMaxAge: 3600,
// ContentSecurityPolicy: "default-src 'self'",
}))
e.IPExtractor = echo.ExtractIPDirect()
e.Use(middleware.Recover())
// Routes
routes.SetupRoutes(e)
e.Use(middleware.Static("static"))
e.Logger.Fatal(e.Start(":" + Config.GetString("API_PORT")))
}