76 lines
2.2 KiB
Go
76 lines
2.2 KiB
Go
package delivery
|
|
|
|
import (
|
|
"fmt"
|
|
"users_management/m/config"
|
|
"users_management/m/delivery/controller"
|
|
"users_management/m/manager"
|
|
"users_management/m/middleware"
|
|
"users_management/m/utils/common"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type Server struct {
|
|
ucManager manager.UsecaseManager
|
|
engine *gin.Engine
|
|
host string
|
|
}
|
|
|
|
func NewServer() *Server {
|
|
cfg, err := config.NewConfig()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
infraManager, err := manager.NewInfraManager(cfg)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
repoManager := manager.NewRepositoryManager(infraManager)
|
|
ucManager := manager.NewUsecaseManager(repoManager, cfg)
|
|
engine := gin.Default()
|
|
engine.Use(common.LoggingToFile())
|
|
host := fmt.Sprintf(":%s", cfg.ApiPort)
|
|
|
|
return &Server{
|
|
ucManager: ucManager,
|
|
engine: engine,
|
|
host: host,
|
|
}
|
|
}
|
|
|
|
func (s *Server) setupController() {
|
|
|
|
s.engine.Static("/uploads", "./uploads")
|
|
s.engine.Use(middleware.CORSMiddleware())
|
|
|
|
|
|
rg := s.engine.Group("/api/v1")
|
|
controller.NewUsersController(s.ucManager.NewUserUsecase(), s.ucManager.NewAuthUsecase(),rg).Route()
|
|
rg.Use(middleware.AuthMiddleware(s.ucManager.NewUserUsecase()))
|
|
rg.Use(middleware.ActivityLoggingMiddleware(s.ucManager.NewActivityLogUsecase()))
|
|
rg.Use(middleware.RateLimitMiddleware())
|
|
{
|
|
controller.NewDeviceController(s.ucManager.NewDeviceUsecase(), rg).Route()
|
|
controller.NewBackboneController(s.ucManager.NewBackboneUsecase(), rg).Route()
|
|
controller.NewFishboneController(s.ucManager.NewFishboneUsecase(), rg).Route()
|
|
controller.NewTowerController(s.ucManager.NewTowerUsecase(), rg).Route()
|
|
controller.NewDevicePortController(s.ucManager.NewDevicePortUsecase(), rg).Route()
|
|
controller.NewCountAssetsController(s.ucManager.NewCountAssetsUsecase(), rg).Route()
|
|
controller.NewActivityLogController(s.ucManager.NewActivityLogUsecase(), rg).Route()
|
|
controller.NewDeviceInspectionController(s.ucManager.NewDeviceInspectionUsecase(), rg).Route()
|
|
controller.NewNearestDeviceController(s.ucManager.NewNearestDeviceUsecase(), rg).Route()
|
|
controller.NewDeviceDetailsController(s.ucManager.NewDeviceDetailsUsecase(), rg).Route()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (s *Server) Run() {
|
|
s.setupController()
|
|
if err := s.engine.Run(s.host); err != nil {
|
|
panic(err)
|
|
}
|
|
} |