package testdata

import (
	"context"
	"time"

	globalserverlessv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/serverless/v1"
	regionalserverlessv1 "github.com/tidbcloud/tidb-management-service/api/spec/regional/serverless/v1"
	"github.com/tidbcloud/tidb-management-service/serverless-global-service/domain/entity"
)

const (
	ClusterId                   string = "111"
	EncryptedCloudAdminPassword        = "abc"
	ClusterVersion                     = "v5.2.1"
)

var (
	Ctx = context.Background()
)

func GetCluster() *entity.Cluster {
	return &entity.Cluster{
		EncryptedCloudAdminPassword: EncryptedCloudAdminPassword,
		CloudProvider:               GetAwsProvider(),
		CreationFinishedAt:          nil,
		CreatedAt:                   time.Time{},
		Attributes:                  entity.ClusterAttributes{},
		Region:                      GetAwsRegionUsWest2(),
		ServerlessServiceCluster: globalserverlessv1.ServerlessServiceCluster{
			ClusterId: ClusterId,
			TenantId:  uint64(1),
			ProjectId: uint64(1),
			HasSetPwd: false,
		},
	}
}

func GetRegionalCluster() *regionalserverlessv1.ServerlessRegionalServiceClusterInfo {
	return &regionalserverlessv1.ServerlessRegionalServiceClusterInfo{
		TenantId:  uint64(1),
		ClusterId: ClusterId,
		Version:   ClusterVersion,
		CreateTs:  time.Now().Unix(),
		Region: &regionalserverlessv1.Region{
			Name:          "us-west-2",
			DisplayName:   "us-west-2",
			CloudProvider: regionalserverlessv1.CloudProvider_CLOUD_PROVIDER_AWS,
		},
		Endpoints: &regionalserverlessv1.Endpoints{
			Public: &regionalserverlessv1.PublicEndpoint{
				Host: "host",
				Port: 4000,
			},
		},
		ProxyEndpoint: "proxy.tidbcloud.com",
		State:         regionalserverlessv1.ClusterState_CLUSTER_STATE_READY,
	}
}

func GetDBUserOperator() *globalserverlessv1.SqlUserOperator {
	return &globalserverlessv1.SqlUserOperator{
		Username:   "u1",
		AuthMethod: globalserverlessv1.SqlUser_AUTH_METHOD_TOKEN,
		Credential: "token",
	}
}
