pink_fox/pink_fox_app/internal/app/cmd/server.go
Michael Makarochkin f6521b9332 Обновлена среда разработки и добавлен новый функционал в сервер
- Улучшена среда разработки, поправлены косяки старта дебагера

- Добавлен логер в приложение

- Добавлен cli framework
2025-02-28 02:47:17 +03:00

58 lines
1.1 KiB
Go

package cmd
import (
"database/sql"
"fmt"
"net/http"
conf2 "pink_fox/internal/app/config"
"pink_fox/internal/app/db"
"pink_fox/internal/app/log"
)
type Server struct {
}
func NewServer() *Server {
return &Server{}
}
func (it *Server) Execute(defaultConfig string, defaultPort int) error {
conf, err := conf2.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 := log.NewLogger(conf.LogFile)
if err != nil {
exit(err)
}
defer func(logger *log.Logger) {
_ = logger.Close()
}(logger)
// TODO доделать
http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprintf(w, "ok")
})
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprintf(w, "Hello world!")
})
fmt.Printf("Starting server at port %d...", conf.Port)
if err = http.ListenAndServe(fmt.Sprintf(":%d", conf.Port), nil); err != nil {
return err
}
return nil
}