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 }