package gcv2

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/gcv2"
)

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

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