package main

import (
	"flag"
	"net/http"
	"olympus/oncall/backend/pkg/config_init"
	"olympus/oncall/backend/pkg/log"
	"olympus/oncall/backend/service/login"
	"olympus/oncall/backend/service/scheduler"
	"olympus/oncall/backend/service/validate"

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

var (
	mode = flag.String("mode", "Deploy", "Running model")
)

func main() {
	log.Init("info")
	flag.Parse()
	config_init.SetUpConfig(*mode)

	gin.SetMode("release")
	log.Info("msg", "backend starts...")
	g := gin.Default()

	_, err := scheduler.New(g.Group("/api1/schedule"))
	if err != nil {
		log.Error("err info", err)
	}
	_, err = validate.New(g.Group("/api1/validate"))
	if err != nil {
		log.Error("err info", err)
	}
	_, err = login.New(g.Group("/loginCB"))
	if err != nil {
		log.Error("error info", err)
	}
	srv := &http.Server{
		Addr:    viper.GetString("port"),
		Handler: g,
	}
	if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
		log.Error("msg", "HTTP server err", "err", err)
	}
}
