- Улучшена среда разработки, поправлены косяки старта дебагера - Добавлен логер в приложение - Добавлен cli framework
58 lines
1.1 KiB
Go
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
|
|
}
|