package project

import (
	"github.com/tidbcloud/devops/api"
	dediv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/dedicated/v1"
)

type ListVPCsReq struct {
	Provider string `form:"provider" json:"provider"`
	Region   string `form:"region" json:"region"`
}

type ListVPCsResp struct {
	VPCs []*VPC `json:"items"`
}

type VPC struct {
	ID                 string   `json:"id"`
	ProjectID          uint64   `json:"project_id"`
	OrgID              uint64   `json:"org_id"`
	CloudProvider      string   `json:"cloud_provider"`
	Region             string   `json:"region"`
	TiDBCloudCIDRBlock string   `json:"tidb_cloud_cidr_block"`
	SecondaryCIDRs     []string `json:"secondary_cidrs"`
}

type AddSecondaryCIDRReq struct {
	Provider      string `json:"provider"`
	Region        string `json:"region"`
	SecondaryCIDR string `json:"secondary_cidr"`
	Reason        string `json:"reason"`
}

type CommonResp struct {
	api.BaseResp

	InstanceID *uint64 `json:"instance_id"` // the operation instance id
}

func BuildProjectVPCs(vpcs []*dediv1.Vpc) []*VPC {
	result := make([]*VPC, 0)
	for _, vpc := range vpcs {
		vpcInfo := &VPC{
			ID:                 vpc.Id,
			OrgID:              vpc.OrganizationId,
			ProjectID:          vpc.ProjectId,
			CloudProvider:      vpc.CloudProviderId.String(),
			Region:             vpc.RegionId.String(),
			TiDBCloudCIDRBlock: vpc.TidbCloudCidrBlock,
			SecondaryCIDRs:     vpc.SecondaryCidrs,
		}
		result = append(result, vpcInfo)
	}
	return result
}
