package export

import (
	"context"

	globalngv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/nextgen/v1"
	exportsvc "github.com/tidbcloud/tidb-management-service/nextgen-global-service/domain/service/export"
)

func NewServer(svc exportsvc.Service) globalngv1.ExportServiceServer {
	return &server{Service: svc}
}

type server struct {
	exportsvc.Service
}

func (s *server) ListExports(
	ctx context.Context,
	req *globalngv1.ListExportsRequest,
) (*globalngv1.ListExportsResponse, error) {
	resp, berr := s.Service.ListExports(ctx, req)
	if berr != nil {
		return nil, berr
	}
	return resp, nil
}

func (s *server) GetExport(
	ctx context.Context,
	req *globalngv1.GetExportRequest,
) (*globalngv1.Export, error) {
	resp, berr := s.Service.GetExport(ctx, req)
	if berr != nil {
		return nil, berr
	}
	return resp, nil
}

func (s *server) CreateExport(
	ctx context.Context,
	req *globalngv1.CreateExportRequest,
) (*globalngv1.Export, error) {
	resp, berr := s.Service.CreateExport(ctx, req)
	if berr != nil {
		return nil, berr
	}
	return resp, nil
}

func (s *server) DeleteExport(
	ctx context.Context,
	req *globalngv1.DeleteExportRequest,
) (*globalngv1.Export, error) {
	resp, berr := s.Service.DeleteExport(ctx, req)
	if berr != nil {
		return nil, berr
	}
	return resp, nil
}

func (s *server) CancelExport(
	ctx context.Context,
	req *globalngv1.CancelExportRequest,
) (*globalngv1.Export, error) {
	resp, berr := s.Service.CancelExport(ctx, req)
	if berr != nil {
		return nil, berr
	}
	return resp, nil
}
