Hub-Api/router/router.go

156 lines
4.6 KiB
Go

package router
import (
"netina/database"
"netina/middlewares"
license_repository "netina/repositories/license"
owner_repository "netina/repositories/owner"
plan_repository "netina/repositories/plan"
role_repository "netina/repositories/role"
store_repository "netina/repositories/store"
user_repository "netina/repositories/user"
"netina/services"
auth "netina/services/authentication"
a "netina/services/authorization"
"github.com/labstack/echo/v4"
)
func LoginRoutes(e *echo.Echo) {
login := e.Group("/login")
login.POST("/phonenumber" , auth.RequestCode)
login.POST("/verifycode" , auth.Login)
}
func UploadFile(e *echo.Echo){
upload := e.Group("/upload")
upload.Use(middlewares.JWTMiddleware)
upload.POST("/", services.Upload , a.AdminRole )
}
func PanelRoutes(e *echo.Echo){
panel := e.Group("/panel")
panel.Use(middlewares.JWTMiddleware)
panel.GET("/" , services.UpdatePanel , a.AdminRole)
}
func UserRoutes(e *echo.Echo){
db := database.Db()
user := e.Group("/user")
user.Use(middlewares.JWTMiddleware)
userCommandRepo := &user_repository.UserCommandRepository{DB: &db}
userQueryRepo := &user_repository.UserQueryRepository{DB: &db}
userService := &services.UserService{
CommandRepo: *userCommandRepo,
QueryRepo: *userQueryRepo,
}
user.POST("/" , userService.CreateUser , a.AdminRole)
user.GET("/:id" , userService.GetUser)
user.GET("/phonenumber" , userService.GetUserByPhoneNumber)
user.PUT("/:id" , userService.UpdateUser , a.AdminRole)
user.DELETE("/:id" , userService.RemoveUser,a.AdminRole)
}
func OwnerRoutes(e *echo.Echo) {
db := database.Db()
owner := e.Group("/owner")
owner.Use(middlewares.JWTMiddleware)
ownerCommandRepo := &owner_repository.OwnerCommandRepository{DB: &db}
ownerQueryRepo := &owner_repository.OwnerQueryRepository{DB: &db}
ownerService := &services.OwnerService{
CommandRepo: *ownerCommandRepo,
QueryRepo: *ownerQueryRepo,
}
owner.POST("/",ownerService.CreateOwner,a.AdminRole)
owner.GET("/:id" , ownerService.GetOwner)
owner.PUT("/:id" , ownerService.UpdateOwner,a.AdminRole)
owner.DELETE("/:id" , ownerService.RemoveOwner,a.AdminRole)
}
func LicenseRoutes(e *echo.Echo) {
db := database.Db()
license := e.Group("/license")
license.Use(middlewares.JWTMiddleware)
licenseCommandRepo := &license_repository.LicenseCommandRepository{DB: &db}
licenseQueryRepo := &license_repository.LicenseQueryRepository{DB: &db}
licenseService := &services.LicenseService{
CommandRepo: *licenseCommandRepo,
QueryRepo: *licenseQueryRepo,
}
license.POST("/",licenseService.CreateLicense,a.AdminRole)
license.GET("/:id" , licenseService.GetLicense)
license.PUT("/:id" , licenseService.UpdateLicense,a.AdminRole)
license.DELETE("/:id" , licenseService.RemoveLicense,a.AdminRole)
}
func PlanRoutes(e *echo.Echo) {
db := database.Db()
plan := e.Group("/plan")
plan.Use(middlewares.JWTMiddleware)
planCommandRepo := &plan_repository.PlanCommandRepository{DB: &db}
planQueryRepo := &plan_repository.PlanQueryRepository{DB: &db}
planService := &services.PlanService{
CommandRepo: *planCommandRepo,
QueryRepo: *planQueryRepo,
}
plan.POST("/",planService.CreatePlan,a.AdminRole)
plan.GET("/:id" , planService.GetPlan)
plan.PUT("/:id" , planService.UpdatePlan,a.AdminRole)
plan.DELETE("/:id" , planService.RemovePlan,a.AdminRole)
}
func StoreRoutes(e *echo.Echo) {
db := database.Db()
store := e.Group("/store")
store.Use(middlewares.JWTMiddleware)
storeCommandRepo := &store_repository.StoreCommandRepository{DB: &db}
storeQueryRepo := &store_repository.StoreQueryRepository{DB: &db}
storeService := &services.StoreService{
CommandRepo: *storeCommandRepo,
QueryRepo: *storeQueryRepo,
}
store.POST("/",storeService.CreateStore,a.AdminRole)
store.GET("/:id" , storeService.GetStore)
store.GET("/owner/:id" , storeService.GetStoresList)
store.GET("/expiredate/:id" , services.ExpireDate , a.AdminRole)
store.PUT("/:id" , storeService.UpdateStore,a.AdminRole)
store.DELETE("/:id" , storeService.RemoveStore,a.AdminRole)
}
func RoleRoutes(e *echo.Echo) {
db := database.Db()
role := e.Group("/role")
role.Use(middlewares.JWTMiddleware)
roleCommandRepo := &role_repository.RoleCommandRepository{DB: &db}
roleQueryRepo := &role_repository.RoleQueryRepository{DB: &db}
roleService := &services.RoleService{
CommandRepo: *roleCommandRepo,
QueryRepo: *roleQueryRepo,
}
role.POST("/",roleService.CreateRole,a.AdminRole)
role.GET("/:id" , roleService.GetRole)
role.PUT("/:id" , roleService.UpdateRole,a.AdminRole)
role.DELETE("/:id" , roleService.RemoveRole,a.AdminRole)
}