// @title GoGin API // @version 1.0 // @description API documentation for GoGin // @host localhost:8080 // @BasePath / // @securityDefinitions.apikey BearerAuth // @in header // @name Authorization // @description Enter your JWT token (include "Bearer " prefix, e.g., "Bearer ") package main import ( "fmt" database "goGin/app/database/config" migrasyon "goGin/app/database/migrate" "goGin/app/database/seed" "goGin/app/routes" config "goGin/config" utils "goGin/pkg/utis" "log" "os" // Swagger _ "goGin/docs" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) const customSwaggerIndexHTML = ` GoGin Swagger
` func main() { // 1. Load Config config.LoadConfig() // 2. Setup Database database.ConnectDB() database.ConnectRedis() migrasyon.Migrate() // 3. Seed komutu (opsiyonel) if len(os.Args) > 1 && os.Args[1] == "seed-admin" { fmt.Println("Seeding default admin user...") seed.SeedDefaultAdmin() seed.SeedDefaultSettings() fmt.Println("Admin seeding completed.") return } // 4. Banner ve başlangıç logu fmt.Println(` ___ __ __ ___ ___ ___ _ __ ___ _ _ ___ | _ )| | / \| \ | _ ) / \| |/ / | __|| \| || \ | _ \| |_| () | |) || _ \| - | ' < | _| | . || |) | |___/|____\__/|___/ |___/|_| |_|_|\_\ |___||_|\_||___/ `) fmt.Println(" Go Backend | v1.0.0 | " + utils.ColorGreen + "Running" + utils.ColorReset) fmt.Println() // 5. Router'ı başlat ve server'ı çalıştır r := routes.SetupRouter() // Custom swagger page: token'ı otomatik Bearer formatına çevirir r.GET("/swagger", func(c *gin.Context) { c.Redirect(302, "/swagger/index.html") }) r.GET("/swagger/index.html", func(c *gin.Context) { c.Data(200, "text/html; charset=utf-8", []byte(customSwaggerIndexHTML)) }) // Swagger JSON ve diğer endpointler (farklı prefix, route çakışması yok) r.GET("/swagger-docs/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) addr := ":" + config.AppConfig.Port if err := r.Run(addr); err != nil { log.Fatalf("failed to run server: %v", err) } }