package cmek

import (
	"context"

	"github.com/tidbcloud/tidb-management-service/dedicated-global-service/domain/entity"
	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

type Filter struct {
	CloudProviderNames []entity.CloudProviderName
	RegionNames        []entity.RegionName
	OrganizationIds    []uint64
	ProjectIds         []uint64
}

//go:generate go run go.uber.org/mock/mockgen@latest -source=$GOFILE -package=mock_$GOPACKAGE -destination=./mock_$GOPACKAGE/mock_$GOFILE
type Repo interface {
	Save(ctx context.Context, cmek *entity.CustomerManagedEncryptionKey) bizerr.BizError
	Get(ctx context.Context, cmekId uint64) (*entity.CustomerManagedEncryptionKey, bizerr.BizError)
	Query(ctx context.Context, filter *Filter) ([]*entity.CustomerManagedEncryptionKey, bizerr.BizError)
	Delete(ctx context.Context, cmekId uint64) bizerr.BizError

	GetProjectCmekKeySuffix(ctx context.Context, projectId uint64) (*entity.ProjectCmekKeySuffix, bizerr.BizError)
	SaveProjectCmekKeySuffix(ctx context.Context, cmek *entity.ProjectCmekKeySuffix) bizerr.BizError
}
