main.go 809 B

1234567891011121314151617181920212223242526272829303132333435
  1. package main
  2. import (
  3. "log"
  4. "net/http"
  5. "os"
  6. "time"
  7. "github.com/example/payroll-svc/internal/platform/clock"
  8. "github.com/example/payroll-svc/internal/store/payslipstore"
  9. "github.com/example/payroll-svc/internal/transport/httpapi"
  10. "github.com/example/payroll-svc/internal/usecase/payroll"
  11. )
  12. func main() {
  13. addr := os.Getenv("LISTEN_ADDR")
  14. if addr == "" {
  15. addr = ":8080"
  16. }
  17. store := payslipstore.New()
  18. svc := payroll.NewService(store, clock.System{})
  19. router := httpapi.NewRouter(httpapi.NewPayrollHandler(svc))
  20. srv := &http.Server{
  21. Addr: addr,
  22. Handler: router,
  23. ReadHeaderTimeout: 5 * time.Second,
  24. }
  25. log.Printf("payrolld listening on %s", addr)
  26. if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  27. log.Fatalf("payrolld: %v", err)
  28. }
  29. }