package controller

import (
	"jirasop/pkg/controller/handler"
	"jirasop/pkg/infra/config"
	"jirasop/pkg/infra/log"
	"net/http"

	"github.com/gin-gonic/gin"
)

type Controller struct {
}

func NewController(config config.RootConfig) *Controller {
	logger := log.Logger.WithName("Controller")
	r := gin.Default()
	// health check
	r.GET("/healthz", func(ctx *gin.Context) { ctx.Status(http.StatusOK) })
	_, err := handler.NewAnalyzeHandler(r.Group("/analyze"), config)
	if err != nil {
		logger.Error(err, "fail to new analyze router")
	}

	srv := &http.Server{
		Addr:    config.GRpcServer.ListenAddr,
		Handler: r,
	}
	if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
		logger.Error(err, "fail to listen an serve")
	}
	return nil
}
