import { TransformNullValue } from 'metrics-chart'

import { MetricInfo } from 'dbaas/components/ChartCard/helpers'
import { compareVersion } from 'dbaas/utils/chore'

export const getMetricsConfig = (changefeed: string, version: string): MetricInfo[] => [
  {
    title: 'Latency',
    queries: [
      {
        promql: `max(ticdc_owner_checkpoint_ts_lag{changefeed="${changefeed}"}) by (changefeed)`,
        name: 'changefeed',
        type: 'line'
      }
    ],
    nullValue: TransformNullValue.AS_ZERO,
    unit: 's'
  },
  {
    title: 'Replica rows Per Sec',
    queries: [
      {
        /**
         * <6.3:          ticdc_sink_total_flushed_rows_count
         * >=6.3 && <7.0: ticdc_sinkv2_batch_row_count_sum
         * >=7.0:         ticdc_sink_batch_row_count_sum
         */
        promql: compareVersion(version, '6.3', '<')
          ? `sum(rate(ticdc_sink_total_flushed_rows_count{changefeed="${changefeed}"}[1m])) by (changefeed)`
          : compareVersion(version, '6.3', '>=') && compareVersion(version, '7.0', '<')
            ? `sum(rate(ticdc_sinkv2_batch_row_count_sum{changefeed="${changefeed}"}[1m])) by (changefeed)`
            : `sum(rate(ticdc_sink_batch_row_count_sum{changefeed="${changefeed}"}[1m])) by (changefeed)`,
        name: 'changefeed',
        type: 'line'
      }
    ],
    nullValue: TransformNullValue.AS_ZERO,
    unit: 'short'
  }
]
