pink_fox/pink_fox_app/src/app/cmd/server.go

65 lines
1.2 KiB
Go

package cmd
import (
"database/sql"
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"pink_fox/src/app"
c "pink_fox/src/app/config"
"pink_fox/src/app/db"
l "pink_fox/src/app/logger"
"pink_fox/src/app/routes_manager"
"pink_fox/src/routes"
)
type Server struct {
}
func NewServer() *Server {
return &Server{}
}
func (it *Server) Execute(defaultConfig string, defaultPort int) error {
conf, err := c.LoadConfig(defaultConfig, defaultPort)
if err != nil {
exit(err)
}
conn, err := db.CreateConnection(&conf.Db)
if err != nil {
exit(err)
}
defer func(conn *sql.DB) {
_ = conn.Close()
}(conn)
logger, err := l.NewLogger(conf.LogFile)
if err != nil {
exit(err)
}
defer func(logger *l.Logger) {
_ = logger.Close()
}(logger)
return it.StartServer(app.New(conf, conn, logger))
}
func (it *Server) StartServer(application *app.Application) error {
r := gin.Default()
_ = r.SetTrustedProxies(nil)
r.GET("/ping", func(c *gin.Context) {
c.String(http.StatusOK, "ok")
})
routes.RegistrationRoutes(routes_manager.NewManager(r, application))
fmt.Printf("Starting http_server at port %d...", application.Conf.Port)
err := r.Run(fmt.Sprintf(":%d", application.Conf.Port))
if err != nil {
return err
}
return nil
}