package repo

import (
	"context"

	"github.com/tidbcloud/pov-service/internal/common/options"
	"github.com/tidbcloud/pov-service/internal/model"
)

type ScriptExec interface {
	List(ctx context.Context, opts options.ListOption[options.ScriptExecOptions]) ([]model.ScriptExec, error)
	GetByID(ctx context.Context, id string) (model.ScriptExec, error)
	GetAndLockForUpdateInTx(
		ctx context.Context,
		tx Tx, ID string,
		opts ...options.TableStatement) (model.ScriptExec, error)
	Create(ctx context.Context, exec model.ScriptExec) (model.ScriptExec, error)
	Update(ctx context.Context, exec model.ScriptExec) (model.ScriptExec, error)
	UpdateInTx(ctx context.Context, tx Tx, exec model.ScriptExec) error

	BeginTx(ctx context.Context) (Tx, error)
}
