package metrics

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

var (
	// GinMetrics
	//HTTPReqDuration metric:http_request_duration_ms
	HTTPReqDuration *prometheus.HistogramVec
	//HTTPReqTotal metric:http_request_total
	HTTPReqTotal *prometheus.CounterVec
)

var (
	OpenAIHistogramVec = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: "aipower",
		Name:      "openai_request_duration_ms",
		Help:      "OpenAI request duration in ms",
	}, []string{"model", "status", "error"})
	OpenAICounterVec = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "aipower",
		Name:      "openai_request_counter",
		Help:      "OpenAI request count",
	}, []string{"model", "status", "error"})
	OpenAIEDATokenUsageCounterVec = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "eda",
		Name:      "token_counter_total",
		Help:      "token counter",
	}, []string{"orgId", "appId", "endpoint", "appKey"})
	OpenAIEDARequestCounterVec = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: "eda",
		Name:      "request_counter_total",
		Help:      "request counter",
	}, []string{"orgId", "appId", "endpoint", "appKey"})
)

func init() {
	prometheus.MustRegister(
		OpenAIHistogramVec, OpenAICounterVec, OpenAIEDATokenUsageCounterVec,
		OpenAIEDARequestCounterVec,
	)
}
