Files
houston-be/cmd/app/server.go
2023-04-10 17:30:28 +05:30

55 lines
1.3 KiB
Go

package app
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/spf13/viper"
"go.uber.org/zap"
"gorm.io/gorm"
"houston/cmd/app/handler"
)
type Server struct {
gin *gin.Engine
logger *zap.Logger
db *gorm.DB
}
func NewServer(gin *gin.Engine, logger *zap.Logger, db *gorm.DB) *Server {
return &Server{
gin: gin,
logger: logger,
db: db,
}
}
func (s *Server) Handler() {
s.teamHandler()
s.severityHandler()
//this should always be at the end since it opens websocket to connect to slackbot
s.houstonHandler()
}
func (s *Server) houstonHandler() {
houstonClient := NewHoustonClient(s.logger)
houstonHandler := handler.NewSlackHandler(s.logger, s.db, houstonClient.socketModeClient)
//cron.RunJob(houstonClient.slackClient, s.db, s.logger)
houstonHandler.HoustonConnect()
}
func (s *Server) teamHandler() {
teamHandler := handler.NewTeamHandler(s.gin, s.logger, s.db)
s.gin.POST("/team/add", teamHandler.AddTeam)
}
func (s *Server) severityHandler() {
severityHandler := handler.NewSeverityHandler(s.gin, s.logger, s.db)
s.gin.POST("/severity/add", severityHandler.AddSeverity)
}
func (s *Server) Start() {
s.logger.Info("starting houston server", zap.String("port", viper.GetString("port")))
s.gin.Run(fmt.Sprintf(":%v", "8080"))
}