package metrics

import (
	"github.com/prometheus/client_golang/prometheus"
)

const (
	ginSubsystem = "gin"
)

func Gin(namespace string) GinMetrics {
	return GinMetrics{
		ReqDur: prometheus.NewHistogramVec(
			prometheus.HistogramOpts{
				Namespace: namespace,
				Subsystem: ginSubsystem,
				Name:      "request_duration_seconds",
				Help:      "The HTTP request latencies in seconds.",
			},
			[]string{"code", "method", "url"},
		),
		RespSize: prometheus.NewSummary(
			prometheus.SummaryOpts{
				Namespace: namespace,
				Subsystem: ginSubsystem,
				Name:      "request_size_bytes",
				Help:      "The HTTP request sizes in bytes.",
			},
		),
	}

}

type GinMetrics struct {
	ReqDur   *prometheus.HistogramVec
	RespSize prometheus.Summary
}
