package testdata

import (
	globalcommonv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/common/v1"
	"github.com/tidbcloud/tidb-management-service/serverless-global-service/domain/entity"
)

func GetCloudProviders() []*entity.CloudProvider {
	awsProvider := GetAwsProvider()
	gcpProvider := GetGcpProvider()
	return []*entity.CloudProvider{
		awsProvider,
		gcpProvider,
	}
}

func GetGcpProvider() *entity.CloudProvider {
	return &entity.CloudProvider{
		Id:          globalcommonv1.CloudProvider_GCP,
		DisplayName: "gcp",
		State:       globalcommonv1.CloudProvider_ACTIVE,
		IsPublic:    true,
		Regions: []*entity.Region{
			GetGcpRegionUsWest1(),
		},
	}
}

func GetAwsProvider() *entity.CloudProvider {
	return &entity.CloudProvider{
		Id:          globalcommonv1.CloudProvider_AWS,
		DisplayName: "aws",
		State:       globalcommonv1.CloudProvider_ACTIVE,
		IsPublic:    true,
		Regions: []*entity.Region{
			GetAwsRegionUsWest1(),
			GetAwsRegionUsWest2(),
		},
	}
}

func GetAwsRegionUsWest2() *entity.Region {
	return &entity.Region{
		Id:              globalcommonv1.Region_AWS_US_WEST_2,
		CloudProviderId: globalcommonv1.CloudProvider_AWS,
		LogicalName:     "us-west-2",
		DisplayName:     "us-west-2",
		State:           globalcommonv1.Region_ACTIVE,
		IsPublic:        true,
		ServicePlan:     globalcommonv1.ServicePlan_Starter,
	}
}

func GetAwsRegionUsWest1() *entity.Region {
	return &entity.Region{
		Id:              globalcommonv1.Region_AWS_US_WEST_1,
		CloudProviderId: globalcommonv1.CloudProvider_AWS,
		LogicalName:     "us-west-1",
		DisplayName:     "us-west-1",
		State:           globalcommonv1.Region_ACTIVE,
		IsPublic:        false,
		OpenedTenantIds: []uint64{1},
		ServicePlan:     globalcommonv1.ServicePlan_Essential,
	}
}

func GetGcpRegionUsWest1() *entity.Region {
	return &entity.Region{
		Id:              globalcommonv1.Region_GCP_US_EAST1,
		CloudProviderId: globalcommonv1.CloudProvider_GCP,
		LogicalName:     "us-west-1",
		DisplayName:     "us-west-1",
		State:           globalcommonv1.Region_ACTIVE,
		IsPublic:        false,
		OpenedTenantIds: []uint64{1},
	}
}
