package export

import (
	"fmt"

	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)

const (
	exportFinalizer = "free-tier.tidbcloud.com/finalizer"
)

func (r *reconcileContext) ensureFinalizer() (bool, error) {
	if r.export.DeletionTimestamp == nil && !controllerutil.ContainsFinalizer(r.export, exportFinalizer) {
		r.Info("Add export finalizer")

		controllerutil.AddFinalizer(r.export, exportFinalizer)

		if err := r.InfraClient.Update(r.ctx, r.export); err != nil {
			return false, fmt.Errorf("add finalizer for export failed: %w", err)
		}
		return true, nil
	}

	return false, nil
}

func (r *reconcileContext) tryRemoveFinalizer() error {
	if r.export.DeletionTimestamp != nil && controllerutil.ContainsFinalizer(r.export, exportFinalizer) {
		r.Info("Remove export finalizer")

		controllerutil.RemoveFinalizer(r.export, exportFinalizer)

		if err := r.InfraClient.Update(r.ctx, r.export); err != nil {
			return fmt.Errorf("remove finalizer for export failed: %w", err)
		}
	}

	return nil
}
