package main import ( "io" "log" "os" "github.com/Caknoooo/go-gin-clean-starter/docs" "github.com/Caknoooo/go-gin-clean-starter/middlewares" "github.com/Caknoooo/go-gin-clean-starter/modules/auth" "github.com/Caknoooo/go-gin-clean-starter/modules/client" maintenancegroup "github.com/Caknoooo/go-gin-clean-starter/modules/maintenance_group" "github.com/Caknoooo/go-gin-clean-starter/modules/menu" "github.com/Caknoooo/go-gin-clean-starter/modules/role" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" // "github.com/Caknoooo/go-gin-clean-starter/modules/role" "github.com/Caknoooo/go-gin-clean-starter/modules/logs" "github.com/Caknoooo/go-gin-clean-starter/modules/user" "github.com/Caknoooo/go-gin-clean-starter/providers" "github.com/Caknoooo/go-gin-clean-starter/script" "github.com/samber/do" // "github.com/common-nighthawk/go-figure" "github.com/gin-gonic/gin" ) func args(injector *do.Injector) bool { if len(os.Args) > 1 { flag := script.Commands(injector) return flag } return true } func run(server *gin.Engine) { server.Static("/assets", "./assets") port := os.Getenv("GOLANG_PORT") if port == "" { port = "8888" } var serve string if os.Getenv("APP_ENV") == "localhost" { serve = "0.0.0.0:" + port } else { serve = ":" + port } // myFigure := figure.NewColorFigure("Hafaro", "", "green", true) // myFigure.Print() if err := server.Run(serve); err != nil { log.Fatalf("error running server: %v", err) } } // @title WMS Wareify API Docs // @version 1.0 // @description This is a sample server celler server. // @termsOfService http://swagger.io/terms/ // @contact.name API Support // @contact.url http://www.swagger.io/support // @contact.email support@swagger.io // @license.name Apache 2.0 // @license.url http://www.apache.org/licenses/LICENSE-2.0.html // @host localhost:8888 // @BasePath /api/v1 // @securityDefinitions.apikey BearerAuth // @in header // @name Authorization // @description Bearer token for authentication // @tokenUrl http://localhost:3000/auth/login // @externalDocs.description OpenAPI // @externalDocs.url https://swagger.io/resources/open-api/ func main() { var ( injector = do.New() ) providers.RegisterDependencies(injector) // set Swagger info (opsional) docs.SwaggerInfo.Title = "WMS Wareify API" docs.SwaggerInfo.Version = "1.0" docs.SwaggerInfo.Host = "localhost:8888" docs.SwaggerInfo.BasePath = "/api/v1" if !args(injector) { return } // Logging to a file. f, _ := os.Create("gin.log") gin.DefaultWriter = io.MultiWriter(f) gin.SetMode(gin.DebugMode) server := gin.Default() //db := do.MustInvokeNamed[*gorm.DB](injector, constants.DB) //scheduler.Start(db) // Load template dari root server.LoadHTMLFiles("logs.html") // Atur trusted proxies, misal hanya localhost dan IP proxy tertentu // server.SetTrustedProxies([]string{"127.0.0.1"}) server.SetTrustedProxies(nil) // disable trusted proxies server.RedirectTrailingSlash = false // Enable CORS middleware server.Use(middlewares.CORSMiddleware()) // server.Use(gin.Recovery(), gin.Logger(), middlewares.CORSMiddleware()) // Register module routes user.RegisterRoutes(server, injector) auth.RegisterRoutes(server, injector) // tenant.RegisterRoutes(server, injector) // product.RegisterRoutes(server, injector) role.RegisterRoutes(server, injector) logs.RegisterRoutes(server, injector) menu.RegisterRoutes(server, injector) maintenancegroup.RegisterRoutes(server, injector) client.RegisterRoutes(server, injector) // register swagger route server.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) run(server) }