wms-be/cmd/main.go

133 lines
3.4 KiB
Go

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"
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
// Enable CORS middleware
server.Use(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)
// register swagger route
server.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
run(server)
}