package compat

import (
	"context"

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

func NewServer(compatSvc compatsvc.Service) globaldedicatedv1.DataPlatformCompatServiceServer {
	return &server{
		svc: compatSvc,
	}
}

type server struct {
	svc compatsvc.Service
}

func (s server) GetCompatCluster(
	ctx context.Context,
	request *globaldedicatedv1.GetCompatClusterRequest,
) (*globaldedicatedv1.CompatCluster, error) {
	cluster, err := s.svc.GetCompatCluster(ctx, request)
	if err != nil {
		return nil, err
	}

	return cluster, nil
}

func (s server) GetCompatNetwork(
	ctx context.Context,
	request *globaldedicatedv1.GetCompatNetworkRequest,
) (*globaldedicatedv1.CompatNetwork, error) {
	network, err := s.svc.GetCompatNetwork(ctx, request)
	if err != nil {
		return nil, err
	}

	return network, nil
}

func (s server) GetCompatProvider(
	ctx context.Context,
	request *globaldedicatedv1.GetCompatProviderRequest,
) (*globaldedicatedv1.CompatProvider, error) {
	provider, err := s.svc.GetCompatProvider(ctx, request)
	if err != nil {
		return nil, err
	}

	return provider, nil
}
