package migrate

import (
	"github.com/pingcap/log"
	"go.uber.org/zap"
	"gorm.io/gorm"
)

var _ = AddDBMigrateRecord(
	"202510291800",
	func(db *gorm.DB) error {
		privateLinkConnections := `
  CREATE TABLE IF NOT EXISTS private_link_connections (
  id varchar(255) NOT NULL,
  cluster_id varchar(255) NOT NULL,
  tenant_id VARCHAR(255) NOT NULL,
  project_id VARCHAR(255) NOT NULL,
  cloud_provider VARCHAR(255) NOT NULL,
  region VARCHAR(255) NOT NULL,
  kubernetes VARCHAR(255) NOT NULL,
  display_name varchar(255) NOT NULL,
  state VARCHAR(255) NOT NULL,
  message text DEFAULT NULL,
  created_by varchar(255) NOT NULL,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  type varchar(255) NOT NULL,
  aws_endpoint_service_name varchar(255) DEFAULT NULL,
  alicloud_endpoint_service_name varchar(255) DEFAULT NULL,
  aws_resource_configuration_arn varchar(255) DEFAULT NULL,
  aws_endpoint_service JSON DEFAULT NULL,
  alicloud_endpoint_service JSON DEFAULT NULL,
  aws_resource_configuration JSON DEFAULT NULL,
  PRIMARY KEY (id),
  KEY idx_cluster_id (cluster_id),
  KEY idx_state (state),
  KEY idx_type (type),
  KEY idx_create_at (created_at)
);
`
		err := db.Exec(privateLinkConnections).Error
		if err != nil {
			log.Error("create table private_link_connections failed", zap.Error(err))
		}

		privateLinkConnectionLinks := `
  CREATE TABLE IF NOT EXISTS private_link_connection_links (
  cluster_id varchar(255) NOT NULL,
  private_link_connection_id VARCHAR(255) NOT NULL,
  biz_id VARCHAR(255) NOT NULL,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  KEY idx_private_link_connection_id (private_link_connection_id),
  UNIQUE INDEX (biz_id)
);
`
		err = db.Exec(privateLinkConnectionLinks).Error
		if err != nil {
			log.Error("create table private_link_connection_links failed", zap.Error(err))
		}

		return nil
	},
)
