package keyspacepoolconfig

import (
	"context"

	"k8s.io/apimachinery/pkg/types"
	"k8s.io/client-go/util/workqueue"
	ctrl "sigs.k8s.io/controller-runtime"
	"sigs.k8s.io/controller-runtime/pkg/event"
)

//nolint:lll // ignore long line length
func (r *Reconciler) handleDeleteConfigEvent(_ context.Context, _ event.DeleteEvent, q workqueue.TypedRateLimitingInterface[ctrl.Request]) {
	r.enqueueKeyspaceFromConfig(q)
}

//nolint:lll // ignore long line length
func (r *Reconciler) handleUpdateConfigEvent(_ context.Context, _ event.UpdateEvent, q workqueue.TypedRateLimitingInterface[ctrl.Request]) {
	r.enqueueKeyspaceFromConfig(q)
}

//nolint:lll // ignore long line length
func (r *Reconciler) handleCreateConfigEvent(_ context.Context, _ event.CreateEvent, q workqueue.TypedRateLimitingInterface[ctrl.Request]) {
	r.enqueueKeyspaceFromConfig(q)
}

func (r *Reconciler) enqueueKeyspaceFromConfig(q workqueue.TypedRateLimitingInterface[ctrl.Request]) {
	q.Add(ctrl.Request{
		NamespacedName: types.NamespacedName{
			Namespace: r.Namespace,
			Name:      KeyspacePoolConfigName,
		},
	})
}
