package repo

import (
	"context"

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

type BizChangefeedFilterOp func(qs entity.BizChangefeedQuerySet) entity.BizChangefeedQuerySet

type BizChangefeedRepo interface {
	Load(ctx context.Context, id uint64) (*entity.BizChangefeed, bizerr.BizError)
	List(ctx context.Context, ops ...BizChangefeedFilterOp) ([]entity.BizChangefeed, bizerr.BizError)
	ListWithSoftDelete(ctx context.Context, ops ...BizChangefeedFilterOp) ([]entity.BizChangefeed, bizerr.BizError)
	Count(ctx context.Context, ops ...BizChangefeedFilterOp) (int64, bizerr.BizError)
	Create(ctx context.Context, bizChangefeed *entity.BizChangefeed) bizerr.BizError
	Update(ctx context.Context, bizChangefeed *entity.BizChangefeed) bizerr.BizError
	Delete(ctx context.Context, id uint64) bizerr.BizError
	Get(ctx context.Context, ops ...BizChangefeedFilterOp) (*entity.BizChangefeed, bizerr.BizError)
}
