NAM-APJATEL-BACKEND/delivery/server.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)
}
}