51 lines
1.1 KiB
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))
|
|
}
|
|
}
|