//nolint:lll
package biz_changefeed

import (
	"context"

	"github.com/tidbcloud/dataflow-service-ng/app/repo/entity"
	"github.com/tidbcloud/pkgv2/bizerr"
)

type ChangefeedSpecificationRepo interface {
	ListChangefeedSpecification(ctx context.Context, filter ChangefeedSpecificationFilter) ([]*entity.ChangefeedSpecification, bizerr.BizError)
	GetChangefeedSpecification(ctx context.Context, filter ChangefeedSpecificationFilter) (*entity.ChangefeedSpecification, bizerr.BizError)
	SaveChangefeedSpecification(ctx context.Context, instanceType *entity.ChangefeedSpecification) bizerr.BizError
}

type CDCInstanceTypeRepo interface {
	List(ctx context.Context, ops ...CDCInstanceTypeOP) ([]entity.CDCInstanceType, bizerr.BizError)
	Save(ctx context.Context, instanceType *entity.CDCInstanceType) bizerr.BizError
	Get(ctx context.Context, ops ...CDCInstanceTypeOP) (*entity.CDCInstanceType, bizerr.BizError)
}

type CDCMachineTypeRepo interface {
	List(ctx context.Context, ops ...CDCMachineTypeOP) ([]entity.CDCMachineType, bizerr.BizError)
	Save(ctx context.Context, machineType *entity.CDCMachineType) bizerr.BizError
	Get(ctx context.Context, ops ...CDCMachineTypeOP) (*entity.CDCMachineType, bizerr.BizError)
}
