Files
warehouse-management-BE/internal/routers/router.go

162 lines
7.0 KiB
Go

package routers
import (
"os"
"wm-backend/configs/constants"
_ "wm-backend/docs/swagger"
"wm-backend/internal/middlewares"
"wm-backend/internal/services"
"wm-backend/pkg/utils"
"github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
func NewRouter() *gin.Engine {
nodeEnv := os.Getenv("ENV")
if nodeEnv != constants.DevEnvironment {
gin.SetMode(gin.ReleaseMode)
}
r := gin.Default()
r.Use(middlewares.LoggingMiddleware())
v1 := r.Group(constants.API_VERSION_1)
{
auth := v1.Group(constants.API_GROUP_AUTH)
{
auth.POST(constants.API_PATH_AUTH_REGISTER, utils.AsyncHandler(services.Register))
auth.POST(constants.API_PATH_AUTH_LOGIN, utils.AsyncHandler(services.Login))
}
protected := v1.Group("")
protected.Use(middlewares.AuthMiddleware())
{
protected.GET(constants.API_PATH_PROFILE, utils.AsyncHandler(services.GetProfile))
warehouse := protected.Group(constants.API_GROUP_WAREHOUSE)
{
warehouse.GET("", utils.AsyncHandler(services.WareHouseList))
warehouse.GET("/:id", utils.AsyncHandler(services.WareHouseGetByID))
warehouse.POST("", utils.AsyncHandler(services.WareHouseCreate))
warehouse.PUT("/:id", utils.AsyncHandler(services.WareHouseUpdate))
warehouse.DELETE("/:id", utils.AsyncHandler(services.WareHouseDelete))
}
room := protected.Group(constants.API_GROUP_ROOM)
{
room.GET("", utils.AsyncHandler(services.RoomList))
room.GET("/:id", utils.AsyncHandler(services.RoomGetByID))
room.POST("", utils.AsyncHandler(services.RoomCreate))
room.PUT("/:id", utils.AsyncHandler(services.RoomUpdate))
room.DELETE("/:id", utils.AsyncHandler(services.RoomDelete))
}
cabinet := protected.Group(constants.API_GROUP_CABINET)
{
cabinet.GET("", utils.AsyncHandler(services.CabinetList))
cabinet.GET("/:id", utils.AsyncHandler(services.CabinetGetByID))
cabinet.POST("", utils.AsyncHandler(services.CabinetCreate))
cabinet.PUT("/:id", utils.AsyncHandler(services.CabinetUpdate))
cabinet.DELETE("/:id", utils.AsyncHandler(services.CabinetDelete))
}
shelve := protected.Group(constants.API_GROUP_SHELF)
{
shelve.GET("", utils.AsyncHandler(services.ShelveList))
shelve.GET("/:id", utils.AsyncHandler(services.ShelveGetByID))
shelve.POST("", utils.AsyncHandler(services.ShelveCreate))
shelve.PUT("/:id", utils.AsyncHandler(services.ShelveUpdate))
shelve.DELETE("/:id", utils.AsyncHandler(services.ShelveDelete))
}
container := protected.Group(constants.API_GROUP_CONTAINER)
{
container.GET("", utils.AsyncHandler(services.ContainerList))
container.GET("/:id", utils.AsyncHandler(services.ContainerGetByID))
container.POST("", utils.AsyncHandler(services.ContainerCreate))
container.PUT("/:id", utils.AsyncHandler(services.ContainerUpdate))
container.DELETE("/:id", utils.AsyncHandler(services.ContainerDelete))
}
componentType := protected.Group(constants.API_GROUP_COMPONENT_TYPE)
{
componentType.GET("", utils.AsyncHandler(services.ComponentTypeList))
componentType.GET("/:id", utils.AsyncHandler(services.ComponentTypeGetByID))
componentType.POST("", utils.AsyncHandler(services.ComponentTypeCreate))
componentType.PUT("/:id", utils.AsyncHandler(services.ComponentTypeUpdate))
componentType.DELETE("/:id", utils.AsyncHandler(services.ComponentTypeDelete))
}
component := protected.Group(constants.API_GROUP_COMPONENT)
{
component.GET("", utils.AsyncHandler(services.ComponentList))
component.GET("/:id", utils.AsyncHandler(services.ComponentGetByID))
component.POST("", utils.AsyncHandler(services.ComponentCreate))
component.PUT("/:id", utils.AsyncHandler(services.ComponentUpdate))
component.DELETE("/:id", utils.AsyncHandler(services.ComponentDelete))
}
componentCode := protected.Group(constants.API_GROUP_COMPONENT_CODE)
{
componentCode.GET("", utils.AsyncHandler(services.ComponentCodeList))
componentCode.GET("/:id", utils.AsyncHandler(services.ComponentCodeGetByID))
componentCode.POST("", utils.AsyncHandler(services.ComponentCodeCreate))
componentCode.PUT("/:id", utils.AsyncHandler(services.ComponentCodeUpdate))
componentCode.DELETE("/:id", utils.AsyncHandler(services.ComponentCodeDelete))
}
componentItem := protected.Group(constants.API_GROUP_COMPONENT_ITEM)
{
componentItem.GET("", utils.AsyncHandler(services.ComponentItemList))
componentItem.GET("/find/:componentId", utils.AsyncHandler(services.ComponentItemFind))
componentItem.GET("/:id", utils.AsyncHandler(services.ComponentItemGetByID))
componentItem.POST("", utils.AsyncHandler(services.ComponentItemCreate))
componentItem.PUT("/:id/status", utils.AsyncHandler(services.ComponentItemUpdateStatus))
componentItem.PUT("/:id", utils.AsyncHandler(services.ComponentItemUpdate))
componentItem.DELETE("/:id", utils.AsyncHandler(services.ComponentItemDelete))
}
invoiceConfig := protected.Group(constants.API_GROUP_INVOICE_CONFIG)
{
invoiceConfig.GET("", utils.AsyncHandler(services.InvoiceConfigList))
invoiceConfig.GET("/:id", utils.AsyncHandler(services.InvoiceConfigGetByID))
invoiceConfig.POST("", utils.AsyncHandler(services.InvoiceConfigCreate))
invoiceConfig.PUT("/:id", utils.AsyncHandler(services.InvoiceConfigUpdate))
invoiceConfig.DELETE("/:id", utils.AsyncHandler(services.InvoiceConfigDelete))
}
invoiceConfigItem := protected.Group(constants.API_GROUP_INVOICE_CONFIG_ITEM)
{
invoiceConfigItem.GET("", utils.AsyncHandler(services.InvoiceConfigItemList))
invoiceConfigItem.GET("/:id", utils.AsyncHandler(services.InvoiceConfigItemGetByID))
invoiceConfigItem.POST("", utils.AsyncHandler(services.InvoiceConfigItemCreate))
invoiceConfigItem.PUT("/:id", utils.AsyncHandler(services.InvoiceConfigItemUpdate))
invoiceConfigItem.DELETE("/:id", utils.AsyncHandler(services.InvoiceConfigItemDelete))
}
invoice := protected.Group(constants.API_GROUP_INVOICE)
{
invoice.GET("", utils.AsyncHandler(services.InvoiceList))
invoice.GET("/:id", utils.AsyncHandler(services.InvoiceGetByID))
invoice.POST("", utils.AsyncHandler(services.InvoiceCreate))
invoice.PUT("/:id", utils.AsyncHandler(services.InvoiceUpdate))
invoice.DELETE("/:id", utils.AsyncHandler(services.InvoiceDelete))
}
alternativeComponent := protected.Group(constants.API_GROUP_ALTERNATIVE_COMPONENT)
{
alternativeComponent.GET("", utils.AsyncHandler(services.AlternativeComponentList))
alternativeComponent.GET("/:id", utils.AsyncHandler(services.AlternativeComponentGetByID))
alternativeComponent.POST("", utils.AsyncHandler(services.AlternativeComponentCreate))
alternativeComponent.PUT("/:id", utils.AsyncHandler(services.AlternativeComponentUpdate))
alternativeComponent.DELETE("/:id", utils.AsyncHandler(services.AlternativeComponentDelete))
}
}
}
r.GET(constants.API_PATH_PING, services.PingHandler)
r.GET(constants.API_PATH_DOCS, ginSwagger.WrapHandler(swaggerFiles.Handler))
return r
}