package changefeed

import (
	"context"

	appworkflow "github.com/tidbcloud/serverless-service/internal/workflow"
)

type sharedScheduler struct {
	hook appworkflow.CDCNewArchHook
}

func NewSharedScheduler(hook appworkflow.CDCNewArchHook) Scheduler {
	return &sharedScheduler{hook: hook}
}

func (s *sharedScheduler) ScheduleChangefeed(ctx context.Context, clusterID, changefeedID string) error {
	return s.hook.ScheduleChangefeed(ctx, clusterID, changefeedID)
}

func (s *sharedScheduler) ScaleChangefeedResource(ctx context.Context, clusterID, changefeedID string) error {
	return s.hook.ScaleChangefeedResource(ctx, clusterID, changefeedID)
}

func (s *sharedScheduler) DeleteChangefeedResource(ctx context.Context, clusterID, changefeedID string) error {
	return s.hook.DeleteChangefeedResource(ctx, clusterID, changefeedID)
}

func (s *sharedScheduler) IsChangefeedResourceReady(ctx context.Context, clusterID, changefeedID string) (bool, error) {
	return s.hook.IsChangefeedResourceReady(ctx, clusterID, changefeedID)
}

func (s *sharedScheduler) IsChangefeedResourceReleased(
	ctx context.Context,
	clusterID, changefeedID string,
) (bool, error) {
	return s.hook.IsChangefeedResourceReleased(ctx, clusterID, changefeedID)
}
