63 lines
1.5 KiB
Go
63 lines
1.5 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() {
|
|
rg := s.engine.Group("/api/v1")
|
|
controller.NewUsersController(s.ucManager.NewUserUsecase(), s.ucManager.NewAuthUsecase(),rg).Route()
|
|
controller.NewBackboneController(s.ucManager.NewBackboneUsecase(), rg).Route()
|
|
rg.Use(middleware.AuthMiddleware())
|
|
{
|
|
controller.NewDeviceController(s.ucManager.NewDeviceUsecase(), rg).Route()
|
|
|
|
controller.NewFishboneController(s.ucManager.NewFishboneUsecase(), rg).Route()
|
|
controller.NewTowerController(s.ucManager.NewTowerUsecase(), rg).Route()
|
|
controller.NewDevicePortController(s.ucManager.NewDevicePortUsecase(), rg).Route()
|
|
}
|
|
}
|
|
|
|
func (s *Server) Run() {
|
|
s.setupController()
|
|
if err := s.engine.Run(s.host); err != nil {
|
|
panic(err)
|
|
}
|
|
} |