package client

import (
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/utils/ptr"
	"sigs.k8s.io/controller-runtime/pkg/client"
)

const (
	forceDeletionMagic metav1.DeletionPropagation = "ForceDelete"
)

// Hack: WithForce set the PropagationPolicy to ForceDelete
type WithForce func()

func (f WithForce) ApplyToDelete(opts *client.DeleteOptions) {
	opts.PropagationPolicy = ptr.To(forceDeletionMagic)
}

func isForceDelete(opts *client.DeleteOptions) bool {
	return opts.PropagationPolicy != nil && *opts.PropagationPolicy == forceDeletionMagic
}
