package ttl_task

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

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

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