package gc

import (
	"github.com/prometheus/client_golang/prometheus"
	"github.com/tidbcloud/aws-shared-provider/pkg/tidbworker/job"
	"github.com/tidbcloud/aws-shared-provider/pkg/tidbworker/metrics"
	"github.com/tidbcloud/aws-shared-provider/pkg/tidbworker/schema/gc"
)

var (
	runnerCounter        prometheus.Counter
	currentTaskCounter   map[gc.State]prometheus.Gauge
	taskCompleteDuration prometheus.Observer
	taskQueueDuration    prometheus.Observer
)

func initMetrics() {
	runnerCounter = metrics.RunnerCounter.WithLabelValues(string(job.TypeGC))
	currentTaskCounter = map[gc.State]prometheus.Gauge{
		gc.StatePending: metrics.CurrentTaskCounter.WithLabelValues(string(job.TypeGC), string(gc.StatePending)),
		gc.StateRunning: metrics.CurrentTaskCounter.WithLabelValues(string(job.TypeGC), string(gc.StateRunning)),
		gc.StateDone:    metrics.CurrentTaskCounter.WithLabelValues(string(job.TypeGC), string(gc.StateDone)),
		gc.StatePaused:  metrics.CurrentTaskCounter.WithLabelValues(string(job.TypeGC), string(gc.StatePaused)),
	}
	taskCompleteDuration = metrics.TaskCompleteDuration.WithLabelValues(string(job.TypeGC))
	taskQueueDuration = metrics.TaskQueueDuration.WithLabelValues(string(job.TypeGC))
}
