Skip to content

Commit 5f87731

Browse files
committed
♻️ refactor: update codebase #2
1 parent c2967ca commit 5f87731

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

chain.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,3 +208,28 @@ func DefaultEventCallbackChain() func(event EventKey, level EventLevel, response
208208
}
209209
}
210210
}
211+
212+
// EventCallbackChainBy returns an event callback that only logs events
213+
// matching the specified event keys. This is useful when you only want to monitor
214+
// specific types of events.
215+
//
216+
// Parameters:
217+
// - events: A variadic list of EventKey values to filter. Only matching events will be logged.
218+
//
219+
// Usage:
220+
//
221+
// // Only log query inspection and transaction events
222+
// datasource.OnEvent(EventCallbackChainBy(EventQueryInspect, EventTransactionBegin, EventTransactionCommit))
223+
func EventCallbackChainBy(events ...EventKey) func(event EventKey, level EventLevel, response wrapify.R) {
224+
eventSet := make(map[EventKey]bool)
225+
for _, e := range events {
226+
eventSet[e] = true
227+
}
228+
229+
return func(event EventKey, level EventLevel, response wrapify.R) {
230+
if !eventSet[event] {
231+
return
232+
}
233+
DefaultEventCallbackChain()(event, level, response)
234+
}
235+
}

0 commit comments

Comments
 (0)