package grpcli

import (
	"github.com/tidbcloud/pkgv2/bizerr"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
)

func GrpcStatus2BizError(s *status.Status) bizerr.BizError {
	switch s.Code() {
	case codes.InvalidArgument:
		return bizerr.New(bizerr.ErrCodeParams, "%s", s.Message())
	case codes.NotFound:
		return bizerr.New(bizerr.ErrCodeRecordNotFound, "%s", s.Message())
	case codes.AlreadyExists:
		return bizerr.New(bizerr.ErrCodeRecordExist, "%s", s.Message())
	case codes.DeadlineExceeded:
		return bizerr.New(bizerr.ErrCodeTimeout, "%s", s.Message())
	case codes.Unauthenticated:
		return bizerr.New(bizerr.ErrCodeAuth, "%s", s.Message())
	case codes.PermissionDenied:
		return bizerr.New(bizerr.ErrCodePermission, "%s", s.Message())
	default:
		return bizerr.New(bizerr.ErrCodeUnknown, "%s", s.Message())
	}
}
