package export

import (
	"context"

	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"

	globalngv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/nextgen/v1"
	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

func (s *serviceImpl) GetExport(ctx context.Context, req *globalngv1.GetExportRequest) (*globalngv1.Export, bizerr.BizError) {
	if req == nil || req.GetClusterId() == "" || req.GetExportId() == "" {
		return nil, bizerr.New(bizerr.ErrCodeParams, "cluster_id and export_id are required")
	}

	tilog.Info(ctx, "get export request", zap.String("cluster_id", req.GetClusterId()), zap.String("export_id", req.GetExportId()))

	ent, err := s.exportRepo.GetByClusterAndExportId(ctx, req.GetClusterId(), req.GetExportId())
	if err != nil {
		tilog.Error(ctx, "failed to get export", zap.Error(err))
		return nil, err
	}
	return schemaToProto(ent.Export), nil
}
