// Code generated by mdatagen. DO NOT EDIT.

package metadata

import (
	"go.opentelemetry.io/collector/config"
	"go.opentelemetry.io/collector/pdata/pmetric"
)

// Type is the component type name.
const Type config.Type = "metadb"

// MetricIntf is an interface to generically interact with generated metric.
type MetricIntf interface {
	Name() string
	New() pmetric.Metric
	Init(metric pmetric.Metric)
}

// Intentionally not exposing this so that it is opaque and can change freely.
type metricImpl struct {
	name     string
	initFunc func(pmetric.Metric)
}

// Name returns the metric name.
func (m *metricImpl) Name() string {
	return m.name
}

// New creates a metric object preinitialized.
func (m *metricImpl) New() pmetric.Metric {
	metric := pmetric.NewMetric()
	m.Init(metric)
	return metric
}

// Init initializes the provided metric object.
func (m *metricImpl) Init(metric pmetric.Metric) {
	m.initFunc(metric)
}

type metricStruct struct {
	TidbCloudDbActiveConnections        MetricIntf
	TidbCloudDbAverageQueryDuration     MetricIntf
	TidbCloudDbCommandPerSecond         MetricIntf
	TidbCloudDbConnections              MetricIntf
	TidbCloudDbDatabaseTime             MetricIntf
	TidbCloudDbDisconnections           MetricIntf
	TidbCloudDbFailedQueries            MetricIntf
	TidbCloudDbFailedQueriesTotal       MetricIntf
	TidbCloudDbQueriesTotal             MetricIntf
	TidbCloudDbQueriesUsingPlanCacheOps MetricIntf
	TidbCloudDbQueryDurationSeconds     MetricIntf
	TidbCloudDbQueryPerSecond           MetricIntf
	TidbCloudDbTotalConnection          MetricIntf
	TidbCloudDbTransactionPerSecond     MetricIntf
	TidbCloudNodeCPUCapacityCores       MetricIntf
	TidbCloudNodeCPUSecondsTotal        MetricIntf
	TidbCloudNodeMemoryCapacityBytes    MetricIntf
	TidbCloudNodeMemoryUsedBytes        MetricIntf
	TidbCloudNodeStorageCapacityBytes   MetricIntf
	TidbCloudNodeStorageUsedBytes       MetricIntf
}

// Names returns a list of all the metric name strings.
func (m *metricStruct) Names() []string {
	return []string{
		"tidb_cloud.db_active_connections",
		"tidb_cloud.db_average_query_duration",
		"tidb_cloud.db_command_per_second",
		"tidb_cloud.db_connections",
		"tidb_cloud.db_database_time",
		"tidb_cloud.db_disconnections",
		"tidb_cloud.db_failed_queries",
		"tidb_cloud.db_failed_queries_total",
		"tidb_cloud.db_queries_total",
		"tidb_cloud.db_queries_using_plan_cache_ops",
		"tidb_cloud.db_query_duration_seconds",
		"tidb_cloud.db_query_per_second",
		"tidb_cloud.db_total_connection",
		"tidb_cloud.db_transaction_per_second",
		"tidb_cloud.node_cpu_capacity_cores",
		"tidb_cloud.node_cpu_seconds_total",
		"tidb_cloud.node_memory_capacity_bytes",
		"tidb_cloud.node_memory_used_bytes",
		"tidb_cloud.node_storage_capacity_bytes",
		"tidb_cloud.node_storage_used_bytes",
	}
}

var metricsByName = map[string]MetricIntf{
	"tidb_cloud.db_active_connections":           Metrics.TidbCloudDbActiveConnections,
	"tidb_cloud.db_average_query_duration":       Metrics.TidbCloudDbAverageQueryDuration,
	"tidb_cloud.db_command_per_second":           Metrics.TidbCloudDbCommandPerSecond,
	"tidb_cloud.db_connections":                  Metrics.TidbCloudDbConnections,
	"tidb_cloud.db_database_time":                Metrics.TidbCloudDbDatabaseTime,
	"tidb_cloud.db_disconnections":               Metrics.TidbCloudDbDisconnections,
	"tidb_cloud.db_failed_queries":               Metrics.TidbCloudDbFailedQueries,
	"tidb_cloud.db_failed_queries_total":         Metrics.TidbCloudDbFailedQueriesTotal,
	"tidb_cloud.db_queries_total":                Metrics.TidbCloudDbQueriesTotal,
	"tidb_cloud.db_queries_using_plan_cache_ops": Metrics.TidbCloudDbQueriesUsingPlanCacheOps,
	"tidb_cloud.db_query_duration_seconds":       Metrics.TidbCloudDbQueryDurationSeconds,
	"tidb_cloud.db_query_per_second":             Metrics.TidbCloudDbQueryPerSecond,
	"tidb_cloud.db_total_connection":             Metrics.TidbCloudDbTotalConnection,
	"tidb_cloud.db_transaction_per_second":       Metrics.TidbCloudDbTransactionPerSecond,
	"tidb_cloud.node_cpu_capacity_cores":         Metrics.TidbCloudNodeCPUCapacityCores,
	"tidb_cloud.node_cpu_seconds_total":          Metrics.TidbCloudNodeCPUSecondsTotal,
	"tidb_cloud.node_memory_capacity_bytes":      Metrics.TidbCloudNodeMemoryCapacityBytes,
	"tidb_cloud.node_memory_used_bytes":          Metrics.TidbCloudNodeMemoryUsedBytes,
	"tidb_cloud.node_storage_capacity_bytes":     Metrics.TidbCloudNodeStorageCapacityBytes,
	"tidb_cloud.node_storage_used_bytes":         Metrics.TidbCloudNodeStorageUsedBytes,
}

func (m *metricStruct) ByName(n string) MetricIntf {
	return metricsByName[n]
}

// Metrics contains a set of methods for each metric that help with
// manipulating those metrics.
var Metrics = &metricStruct{
	&metricImpl{
		"tidb_cloud.db_active_connections",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_active_connections")
			metric.SetDescription("The number of active connection.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_average_query_duration",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_average_query_duration")
			metric.SetDescription("The duration between the time that the client's network request is sent to TiDB and the time that the request is returned to the client after TiDB has executed it. In general, client requests are sent in the form of SQL statements, but can also include the execution time of commands such as COM_PING, COM_SLEEP, COM_STMT_FETCH, and COM_SEND_LONG_DATA.\n Because TiDB supports Multi-Query, it supports sending multiple SQL statements at one time, such as select 1; select 1; select 1;. In this case, the total execution time of this query includes the execution time of all SQL statements.")
			metric.SetUnit("s")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_command_per_second",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_command_per_second")
			metric.SetDescription("The number of commands processed by TiDB per second, which is classified according to the success or failure of command execution results.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_connections",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_connections")
			metric.SetDescription("Current number of connections in TiDB server.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_database_time",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_database_time")
			metric.SetDescription("A time model statistic that is the sum of all process' CPU consumption plus the sum of non-idle wait time.")
			metric.SetUnit("s")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_disconnections",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_disconnections")
			metric.SetDescription("The number of clients disconnected.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_failed_queries",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_failed_queries")
			metric.SetDescription("The statistics of error types (such as syntax errors and primary key conflicts) according to the errors occurred when executing SQL statements per second on each TiDB instance.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_failed_queries_total",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_failed_queries_total")
			metric.SetDescription("The total number of execution errors.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeSum)
			metric.Sum().SetIsMonotonic(true)
			metric.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative)
		},
	},
	&metricImpl{
		"tidb_cloud.db_queries_total",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_queries_total")
			metric.SetDescription("The total number of queries.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeSum)
			metric.Sum().SetIsMonotonic(true)
			metric.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative)
		},
	},
	&metricImpl{
		"tidb_cloud.db_queries_using_plan_cache_ops",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_queries_using_plan_cache_ops")
			metric.SetDescription("The statistics of queries using Plan Cache per second.\n The execution plan cache only supports the prepared statement command. If the value is 0, the execution plan cache has not been hit.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_query_duration_seconds",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_query_duration_seconds")
			metric.SetDescription("Query duration distribution of seconds.")
			metric.SetUnit("s")
			metric.SetDataType(pmetric.MetricDataTypeHistogram)
			metric.Histogram().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative)
		},
	},
	&metricImpl{
		"tidb_cloud.db_query_per_second",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_query_per_second")
			metric.SetDescription("The number of SQL statements executed per second on all TiDB instances, which is counted according to SELECT, INSERT, UPDATE, and other types of statements.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_total_connection",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_total_connection")
			metric.SetDescription("The number of current connection")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.db_transaction_per_second",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.db_transaction_per_second")
			metric.SetDescription("The number of transactions executed per second.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.node_cpu_capacity_cores",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.node_cpu_capacity_cores")
			metric.SetDescription("The capacity cores of TiDB/TiKV/TiFlash nodes.")
			metric.SetUnit("1")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.node_cpu_seconds_total",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.node_cpu_seconds_total")
			metric.SetDescription("The CPU usage of TiDB/TiKV/TiFlash nodes.")
			metric.SetUnit("s")
			metric.SetDataType(pmetric.MetricDataTypeSum)
			metric.Sum().SetIsMonotonic(true)
			metric.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative)
		},
	},
	&metricImpl{
		"tidb_cloud.node_memory_capacity_bytes",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.node_memory_capacity_bytes")
			metric.SetDescription("The memory capacity bytes of TiDB/TiKV/TiFlash nodes.")
			metric.SetUnit("By")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.node_memory_used_bytes",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.node_memory_used_bytes")
			metric.SetDescription("The used memory bytes of TiDB/TiKV/TiFlash nodes.")
			metric.SetUnit("By")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.node_storage_capacity_bytes",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.node_storage_capacity_bytes")
			metric.SetDescription("The disk capacity bytes of TiKV/TiFlash nodes.")
			metric.SetUnit("By")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
	&metricImpl{
		"tidb_cloud.node_storage_used_bytes",
		func(metric pmetric.Metric) {
			metric.SetName("tidb_cloud.node_storage_used_bytes")
			metric.SetDescription("The disk usage bytes of TiKV/TiFlash nodes.")
			metric.SetUnit("By")
			metric.SetDataType(pmetric.MetricDataTypeGauge)
		},
	},
}

// M contains a set of methods for each metric that help with
// manipulating those metrics. M is an alias for Metrics
var M = Metrics

// Attributes contains the possible metric attributes that can be used.
var Attributes = struct {
	// ClusterID (Cluster ID.)
	ClusterID string
	// ClusterName (Cluster name.)
	ClusterName string
	// Component (Components of a TiDB cluster.)
	Component string
	// ErrorType (Error types of query errors, such as planner:xxx, executor:2345, etc.)
	ErrorType string
	// InTxn (In transaction.)
	InTxn string
	// Instance (Instance name.)
	Instance string
	// ProjectName (Project name.)
	ProjectName string
	// Result (Result of disconnection.)
	Result string
	// SQLType (The command types of sql statements, such as select, create, etc.)
	SQLType string
	// TxnMode (Transaction mode.)
	TxnMode string
}{
	"cluster_id",
	"cluster_name",
	"component",
	"type",
	"in_txn",
	"instance",
	"project_name",
	"result",
	"sql_type",
	"txn_mode",
}

// A is an alias for Attributes.
var A = Attributes

// AttributeComponent are the possible values that the attribute "component" can have.
var AttributeComponent = struct {
	Tidb    string
	Tikv    string
	Pd      string
	Tiflash string
}{
	"tidb",
	"tikv",
	"pd",
	"tiflash",
}
