package branch

import (
	"fmt"

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

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

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

		controllerutil.AddFinalizer(r.branch, branchFinalizer)

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

	return nil
}

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

		controllerutil.RemoveFinalizer(r.branch, branchFinalizer)

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

	return nil
}
