package vpc

import (
	"context"

	"google.golang.org/protobuf/types/known/emptypb"

	globaldedicatedv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/dedicated/v1"
)

func (s *server) DeleteVpcPeering(
	ctx context.Context,
	req *globaldedicatedv1.DeleteVpcPeeringRequest,
) (*emptypb.Empty, error) {
	err := s.vpcService.DeleteVpcPeering(ctx, req)
	if err != nil {
		return nil, err
	}
	return &emptypb.Empty{}, nil
}

func (s *server) ListVpcPeerings(
	ctx context.Context,
	req *globaldedicatedv1.ListVpcPeeringsRequest,
) (*globaldedicatedv1.ListVpcPeeringsResponse, error) {
	resp, err := s.vpcService.ListVpcPeerings(ctx, req)
	if err != nil {
		return nil, err
	}
	return resp, nil
}

func (s *server) CreateVpcPeering(
	ctx context.Context,
	request *globaldedicatedv1.CreateVpcPeeringRequest,
) (*globaldedicatedv1.CreateVpcPeeringResponse, error) {
	resp, err := s.vpcService.CreateVpcPeering(ctx, request.GetPeering())
	if err != nil {
		return nil, err
	}
	return &globaldedicatedv1.CreateVpcPeeringResponse{PeeringId: resp.GetId()}, nil
}

func (s *server) GetVpcPeering(
	ctx context.Context,
	request *globaldedicatedv1.GetVpcPeeringRequest,
) (*globaldedicatedv1.VpcPeering, error) {
	resp, err := s.vpcService.GetVpcPeering(ctx, request.GetCloudProvider(), request.GetVpcPeeringId())
	if err != nil {
		return nil, err
	}
	return resp, nil
}
