package common

import (
	"context"
	"time"

	"github.com/tidbcloud/infra-provider/pkg/cloud/aws"
	"github.com/tidbcloud/infra-provider/pkg/deploy"
	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
	"github.com/tidbcloud/infra-provider/regional-server/pkg/controllers/privatelinkservicemigration/task"
)

type ResumePls struct {
	*task.BaseTask
	awsCli aws.Client
}

func NewResumePls(c *task.Context, awsCli aws.Client) *ResumePls {
	return &ResumePls{BaseTask: &task.BaseTask{Context: c}, awsCli: awsCli}
}

func (t *ResumePls) Name() string {
	return "ResumePls"
}

func (t *ResumePls) Create(ctx context.Context) deploy.Result {
	if t.PrivateLinkService.Annotations == nil {
		t.PrivateLinkService.Annotations = map[string]string{}
	}
	if t.PrivateLinkService.Annotations[v1alpha1.AnnotationKeyReconciliationPaused] != "true" {
		return deploy.Done()
	}

	delete(t.PrivateLinkService.Annotations, v1alpha1.AnnotationKeyReconciliationPaused)
	if err := t.PrivateLinkServiceRW.Update(ctx, t.PrivateLinkService); err != nil {
		return deploy.Panic(err).WithRequeuAfter(time.Second * 5)
	}

	return deploy.Done()
}
