package thanos

import (
	"github.com/tidbcloud/metrics-integration/pipeline/internal/metadata"
	"go.opentelemetry.io/collector/component"
)

type Config struct {
	//processor.Settings `mapstructure:",squash"`
	metadata.MetricsBuilderConfig `mapstructure:",squash"`

	TaskQueue component.ID `mapstructure:"taskqueue"`
}

func createDefaultConfig() component.Config {
	return &Config{
		MetricsBuilderConfig: metadata.MetricsBuilderConfig{
			Metrics: metadata.MetricsConfig{
				TidbCloudNodeCPUSecondsTotal: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeCPUSecondsTotalRate: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeMemoryCapacityBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeMemoryAvailableBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeMemoryUsedBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeStorageCapacityBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeStorageAvailableBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeStorageUsedBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbQueriesTotal: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbFailedQueriesTotal: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbConnections: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbTotalConnection: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbActiveConnections: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbDisconnections: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbDatabaseTime: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbQueryPerSecond: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbRowStorageUsedBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbColumnarStorageUsedBytes: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbFailedQueries: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbCommandPerSecond: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbQueriesUsingPlanCacheOps: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbAverageQueryDuration: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbTransactionPerSecond: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbQueryDurationSecondsCount: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbQueryDurationSecondsSum: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudCdcChangefeedLatency: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudCdcChangefeedReplicaRows: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudCdcChangefeedResolvedTsLag: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudCdcChangefeedStatus: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudCdcCheckpointTs: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbComponentUptime: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudResourceManagerResourceUnitReadRequestUnit: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudResourceManagerResourceUnitWriteRequestUnit: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudResourceManagerResourceRequestUnitTotal: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDmTaskState: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDmSyncerReplicationLagBucket: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDmSyncerReplicationLagGauge: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDmRelayReadErrorCount: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudDbKvRequestDuration: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeDiskReadLatency: metadata.MetricConfig{
					Enabled: true,
				},
				TidbCloudNodeDiskWriteLatency: metadata.MetricConfig{
					Enabled: true,
				},
			},
		},
	}
}
