package main
import (
"fmt"
"log"
"os"
"strings"
"ginimageApi/app/middleware"
"ginimageApi/configs"
_ "ginimageApi/docs"
"ginimageApi/routers"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
)
// @title Gin Image API
// @version 1.0
// @description GinImage API dokumantasyonu. Legacy access token formatlari desteklenmez.
// @host mcp.beyhano.net.tr
// @schemes https
// @securityDefinitions.apikey BearerAuth
// @in header
// @name Authorization
func ensureRequiredEnv() error {
if strings.TrimSpace(os.Getenv("JWT_SECRET")) == "" {
return fmt.Errorf("JWT_SECRET zorunludur")
}
return nil
}
// TIP
To run your code, right-click the code and select Run.
Alternatively, click
// the icon in the gutter and select the Run menu item from here.
func main() {
if err := godotenv.Load(); err != nil {
log.Println("no .env file found, relying on environment variables")
}
if err := ensureRequiredEnv(); err != nil {
log.Fatalf("config: %v", err)
}
if err := configs.ConnectDB(); err != nil {
log.Fatalf("database: %v", err)
}
if err := configs.RunAutoMigrate(); err != nil {
log.Fatalf("migration: %v", err)
}
if err := configs.SeedSecurityDefaults(); err != nil {
log.Fatalf("seed security defaults: %v", err)
}
if err := configs.ConnectRedis(); err != nil {
log.Fatalf("redis: %v", err)
}
defer func() {
if err := configs.CloseRedis(); err != nil {
log.Printf("redis kapatılırken hata: %v", err)
}
}()
r := gin.Default()
r.Use(middleware.DynamicCORS())
r.Use(middleware.DynamicRateLimit())
routers.Setup(r)
if err := r.SetTrustedProxies([]string{"127.0.0.1"}); err != nil {
log.Fatalf("failed to set trusted proxies: %v", err)
}
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
if err := r.Run(":" + port); err != nil {
log.Fatalf("server: %v", err)
}
}