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)) } }