67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
|
|
"nearle/config"
|
|
"nearle/db"
|
|
"nearle/middlewares"
|
|
"nearle/routes"
|
|
"nearle/utils"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/cors"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func main() {
|
|
|
|
_ = godotenv.Load()
|
|
cfg := config.Load()
|
|
|
|
app := fiber.New()
|
|
|
|
app.Use(cors.New(cors.Config{
|
|
AllowHeaders: "Origin,Content-Type,Accept,Authorization",
|
|
AllowOrigins: "http://localhost:3000,http://localhost:3001,http://localhost:3002,http://localhost:3003,http://localhost:3004,http://localhost:3005,https://console.nearlexpress.com,https://app.nearlexpress.com,https://admin.nearlexpress.com,https://developer.nearlexpress.com", // 🔥 simplify (or keep your domains)
|
|
AllowCredentials: true,
|
|
AllowMethods: "GET,POST,PUT,DELETE,PATCH,OPTIONS",
|
|
}))
|
|
|
|
app.Use(middlewares.ZapLogger())
|
|
|
|
utils.Info("Connecting to database...")
|
|
|
|
db.Connect()
|
|
db.InitRedis()
|
|
|
|
utils.Info("All connections established!")
|
|
|
|
routes.LiveSetup(app)
|
|
|
|
go func() {
|
|
utils.Info("Server starting", "port", cfg.Port)
|
|
if err := app.Listen(":" + cfg.Port); err != nil {
|
|
utils.Logger.Fatalf("Server failed: %v", err)
|
|
}
|
|
}()
|
|
|
|
gracefulShutdown()
|
|
}
|
|
|
|
func gracefulShutdown() {
|
|
c := make(chan os.Signal, 1)
|
|
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
|
|
|
<-c
|
|
utils.Info("Shutting down...")
|
|
|
|
db.CloseDB()
|
|
|
|
time.Sleep(2 * time.Second)
|
|
utils.Info("Shutdown complete")
|
|
}
|