package metrics

import (
	"github.com/prometheus/client_golang/prometheus"
	k8smetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
)

var (
	// PRNumByCommit represents the number of merged PRs associated with a commit.
	PRNumByCommit = prometheus.NewGaugeVec(
		prometheus.GaugeOpts{
			Namespace: "infra",
			Subsystem: "cluster",
			Name:      "pr_num_by_commit",
			Help:      "The number of merged PRs associated with a commit.",
		}, []string{"cluster_id", "commit_id"})

	ReconcileDuration = prometheus.NewHistogramVec(
		prometheus.HistogramOpts{
			Namespace: "infra",
			Subsystem: "controller",
			Name:      "reconcile_duration",
			Help:      "the time that used in each controller reconcile",
			Buckets:   prometheus.ExponentialBuckets(10, 2, 6), // 10s~640s,
		}, []string{"controller"})
)

func init() {
	k8smetrics.Registry.MustRegister(
		PRNumByCommit,
		ReconcileDuration,
	)
}
