// Package metrics add by blacknc <blacknc@163.com> at 2023/03/03 11:46:18
package metrics

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

var (
	// Dataapp management metrics
	CreateDataAppCounter *prometheus.CounterVec
	DeleteDataAppCounter *prometheus.CounterVec
	EventFailedCounter   *prometheus.CounterVec
	DeployDuration       *prometheus.HistogramVec
	DDBCounter           *prometheus.CounterVec
)

func dataappMgmtRegister(subsystem string) {

	CreateDataAppCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: namespace,
		Subsystem: subsystem,
		Name:      "create_dataapp",
		Help:      "Cumulative number of create data app.",
	}, []string{"ok"})

	DeleteDataAppCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: namespace,
		Subsystem: subsystem,
		Name:      "delete_dataapp",
		Help:      "Cumulative number of delete data app.",
	}, []string{"ok"})

	EventFailedCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: namespace,
		Subsystem: subsystem,
		Name:      "publish_event_failed",
		Help:      "Number of event notify failed.",
	}, []string{"event_type", "action_type"})

	DeployDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Namespace: namespace,
		Subsystem: subsystem,
		Name:      "deploy_duration",
		Buckets:   prometheus.ExponentialBuckets(0.001, 2, 20), // 1ms ~ 524s
	}, []string{"ok"})

	DDBCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Namespace: namespace,
		Subsystem: subsystem,
		Name:      "sync_ddb",
		Help:      "Number of sync ddb.",
	}, []string{"ok"})

	prometheus.MustRegister(
		CreateDataAppCounter,
		DeleteDataAppCounter,
		EventFailedCounter,
		DeployDuration,
		DDBCounter,
	)
}
