package repository

import (
	"context"

	globalcommonv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/common/v1"
	"github.com/tidbcloud/tidb-management-service/serverless-global-service/domain/entity"
)

type CloudProviderRepo interface {
	Save(ctx context.Context, cloudProvider *entity.CloudProvider) (*entity.CloudProvider, error)
	LoadAll(ctx context.Context) ([]*entity.CloudProvider, error)
	LoadByName(ctx context.Context, name entity.CloudProviderName) (*entity.CloudProvider, error)
}

type CloudRegionFilter struct {
	CloudProviderNames []globalcommonv1.CloudProvider_Name
	Names              []globalcommonv1.Region_Name
	ServicePlans       []globalcommonv1.ServicePlan
	EngineTypes        []string
}

type RegionRepo interface {
	Save(ctx context.Context, region *entity.Region) (*entity.Region, error)
	LoadRegions(ctx context.Context, filter *CloudRegionFilter) ([]*entity.Region, error)
	Delete(ctx context.Context, region *entity.Region) error
}
