package cluster

import (
	"context"
	"fmt"

	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/entity"
	"github.com/tidbcloud/tidb-management-service/tidb-mgmt-service/domain/repository"
)

func (svc *service) CountClusters(ctx context.Context, filter *repository.ClusterFilter) (int64, error) {
	ctx, span := tracer.Start(ctx, "ClusterService.CountClusters")
	defer span.End()

	if filter == nil {
		filter = &repository.ClusterFilter{
			View:       entity.ClusterViewClusterViewBasic,
			DeployType: entity.DeployTypeDedicated,
		}
	}

	// make sure deploy type is dedicated
	filter.DeployType = entity.DeployTypeDedicated

	count, err := svc.clusterRepo.CountClusterByFilter(ctx, filter)
	if err != nil {
		return 0, fmt.Errorf("failed to count cluster: %w", err)
	}

	return count, nil
}
