@@ -232,3 +232,63 @@ func ExactNamePredicate(name, namespace string) predicate.Predicate {
232
232
return obj .GetName () == name && (namespace == "*" || obj .GetNamespace () == namespace )
233
233
})
234
234
}
235
+
236
+ /////////////////////////////
237
+ /// EVENT TYPE PREDICATES ///
238
+ /////////////////////////////
239
+
240
+ type EventType string
241
+
242
+ const (
243
+ CreateEvent EventType = "create"
244
+ UpdateEvent EventType = "update"
245
+ DeleteEvent EventType = "delete"
246
+ GenericEvent EventType = "generic"
247
+ )
248
+
249
+ type eventTypePredicate struct {
250
+ eventType EventType
251
+ }
252
+
253
+ var _ predicate.Predicate = eventTypePredicate {}
254
+
255
+ func (e eventTypePredicate ) Create (_ event.TypedCreateEvent [client.Object ]) bool {
256
+ return e .eventType == CreateEvent
257
+ }
258
+
259
+ func (e eventTypePredicate ) Delete (_ event.TypedDeleteEvent [client.Object ]) bool {
260
+ return e .eventType == DeleteEvent
261
+ }
262
+
263
+ func (e eventTypePredicate ) Update (_ event.TypedUpdateEvent [client.Object ]) bool {
264
+ return e .eventType == UpdateEvent
265
+ }
266
+
267
+ func (e eventTypePredicate ) Generic (_ event.TypedGenericEvent [client.Object ]) bool {
268
+ return e .eventType == GenericEvent
269
+ }
270
+
271
+ // OnCreatePredicate returns a predicate that reacts only to create events.
272
+ func OnCreatePredicate () predicate.Predicate {
273
+ return OnEventTypePredicate (CreateEvent )
274
+ }
275
+
276
+ // OnUpdatePredicate returns a predicate that reacts only to update events.
277
+ func OnUpdatePredicate () predicate.Predicate {
278
+ return OnEventTypePredicate (UpdateEvent )
279
+ }
280
+
281
+ // OnDeletePredicate returns a predicate that reacts only to delete events.
282
+ func OnDeletePredicate () predicate.Predicate {
283
+ return OnEventTypePredicate (DeleteEvent )
284
+ }
285
+
286
+ // OnGenericPredicate returns a predicate that reacts only to generic events.
287
+ func OnGenericPredicate () predicate.Predicate {
288
+ return OnEventTypePredicate (GenericEvent )
289
+ }
290
+
291
+ // OnEventTypePredicate returns a predicate that reacts only to events of the specified type.
292
+ func OnEventTypePredicate (eventType EventType ) predicate.Predicate {
293
+ return eventTypePredicate {eventType : eventType }
294
+ }
0 commit comments