package common

import (
	"encoding/json"

	"github.com/tidbcloud/dataflow-service-e2e/internal/tidbcloud/premium/consoleapi/cdc/model"
)

const KafkaChangefeedSpecTpl = `
{
  "name": "changefeed-test",
  "network_info": {
    "network_type": "NetworkType_Public",
    "ports": null
  },
  "url": "192.168.0.0:9092",
  "changefeed_instance_type": "2rcu",
  "connector_type": "KAFKA",
  "kafka_info": {
    "authentication": {
      "auth_type": "DISABLE"
    },
    "broker": {
      "broker_endpoints": "192.168.0.0:9092",
      "compression": "NONE",
      "kafka_version": "KAFKA_VERSION_2XX"
    },
    "data_format": {
      "protocol": "CANAL_JSON"
    },
    "start_position": {
      "mode": "FROM_NOW"
    },
    "table_config": {
      "filter_rule": [
        "*.*"
      ],
      "mode": "FORCE_SYNC"
    },
    "topic_partition_config": {
      "default_topic": "whatever",
      "dispatch_type": "DISPATCH_TYPE_ONE_TOPIC",
      "partition_dispatchers": [
        {
          "columns": null,
          "matcher": [
            "*.*"
          ],
          "partition_type": "TABLE"
        }
      ],
      "partition_num": 1,
      "replication_factor": 1,
      "separator": "_",
      "topic_prefix": "prefix_",
      "topic_suffix": "_suffix"
    }
  }
}
`

func GenDefaultKafkaChangefeedSpec() *model.ChangefeedServiceCreateChangefeedBody {
	var body model.ChangefeedServiceCreateChangefeedBody
	err := json.Unmarshal([]byte(KafkaChangefeedSpecTpl), &body)
	if err != nil {
		panic("GenDefaultKafkaChangefeedSpec error: " + err.Error())
	}
	body.ChangefeedType = model.ConsoleapiChangefeedTypeKAFKA.Pointer()
	return &body
}
