169 lines
7.3 KiB
Go
169 lines
7.3 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))
|
|
}
|
|
|
|
dashboard := protected.Group(constants.API_GROUP_DASHBOARD)
|
|
{
|
|
dashboard.GET("/summary", utils.AsyncHandler(services.DashboardSummary))
|
|
dashboard.GET("/stock-alerts", utils.AsyncHandler(services.DashboardStockAlerts))
|
|
dashboard.GET("/anomalies", utils.AsyncHandler(services.DashboardAnomalies))
|
|
}
|
|
}
|
|
}
|
|
|
|
r.GET(constants.API_PATH_PING, services.PingHandler)
|
|
r.GET(constants.API_PATH_DOCS, ginSwagger.WrapHandler(swaggerFiles.Handler))
|
|
return r
|
|
}
|