package middlewares

import (
	"net/http"
	"time"

	"github.com/rs/zerolog/log"
)

type TimerMiddleware struct {
	h http.Handler
}

func NewTimerMiddleware(h http.Handler) http.Handler {
	return &TimerMiddleware{
		h: h,
	}
}

func (m *TimerMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	defer func(now time.Time) {
		log.Debug().Msgf("%s %s spent %s", r.Method, r.URL.String(), time.Since(now))
	}(time.Now())

	m.h.ServeHTTP(w, r)
}
