meteologica/service_a/server/main.go

51 lines
1.1 KiB
Go

package main
import (
"embed"
"fmt"
"log/slog"
"net/http"
"os"
"pkg"
"servicea/internal/app"
"servicea/internal/domains/meteo"
"servicea/internal/router"
"time"
)
//go:embed database/migrations
var database embed.FS
func init() {
err := pkg.LoadEnvFile("./../.env")
if err != nil {
slog.Warn("error loading env file", "error", err)
}
}
func main() {
pool := app.NewPGXPool(fmt.Sprintf("postgres://%s:%s@%s", os.Getenv("POSTGRES_USER"), os.Getenv("POSTGRES_PASSWORD"), os.Getenv("DSN")))
app.Migrate(database)
mux := router.SetupRoutes()
meteoRepo := meteo.NewPGXRepo(pool)
meteoService := meteo.NewService(meteoRepo)
meteoHandler := meteo.NewHandler(meteoService)
meteo.RegisterRoutes(mux, meteoHandler)
server := http.Server{
Addr: ":8080",
Handler: mux,
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
IdleTimeout: 60 * time.Second,
ReadHeaderTimeout: 5 * time.Second,
}
slog.Info("server starting on :8080")
if err := server.ListenAndServe(); err != nil {
panic(fmt.Sprintf("server failed, error %s", err))
}
}