@@ -22,23 +22,6 @@ import (
2222
2323type CbFn func (ctx context.Context , opCtx * operation.OpContext , opts ... any ) error
2424
25- var Callbacks = initializeCallbacks ()
26-
27- func initializeCallbacks () * Callback {
28- return & Callback {
29- beforeInsert : make ([]callbackHandler , 0 ),
30- afterInsert : make ([]callbackHandler , 0 ),
31- beforeUpdate : make ([]callbackHandler , 0 ),
32- afterUpdate : make ([]callbackHandler , 0 ),
33- beforeDelete : make ([]callbackHandler , 0 ),
34- afterDelete : make ([]callbackHandler , 0 ),
35- beforeUpsert : make ([]callbackHandler , 0 ),
36- afterUpsert : make ([]callbackHandler , 0 ),
37- beforeFind : make ([]callbackHandler , 0 ),
38- afterFind : make ([]callbackHandler , 0 ),
39- }
40- }
41-
4225func InitializeCallbacks () * Callback {
4326 return & Callback {
4427 beforeInsert : make ([]callbackHandler , 0 ),
@@ -54,10 +37,6 @@ func InitializeCallbacks() *Callback {
5437 }
5538}
5639
57- func GetCallback () * Callback {
58- return Callbacks
59- }
60-
6140type Callback struct {
6241 beforeInsert []callbackHandler
6342 afterInsert []callbackHandler
@@ -71,6 +50,46 @@ type Callback struct {
7150 afterFind []callbackHandler
7251}
7352
53+ func (c * Callback ) BeforeInsert () []callbackHandler {
54+ return c .beforeInsert
55+ }
56+
57+ func (c * Callback ) AfterInsert () []callbackHandler {
58+ return c .afterInsert
59+ }
60+
61+ func (c * Callback ) BeforeUpdate () []callbackHandler {
62+ return c .beforeUpdate
63+ }
64+
65+ func (c * Callback ) AfterUpdate () []callbackHandler {
66+ return c .afterUpdate
67+ }
68+
69+ func (c * Callback ) BeforeDelete () []callbackHandler {
70+ return c .beforeDelete
71+ }
72+
73+ func (c * Callback ) AfterDelete () []callbackHandler {
74+ return c .afterDelete
75+ }
76+
77+ func (c * Callback ) BeforeUpsert () []callbackHandler {
78+ return c .beforeUpsert
79+ }
80+
81+ func (c * Callback ) AfterUpsert () []callbackHandler {
82+ return c .afterUpsert
83+ }
84+
85+ func (c * Callback ) BeforeFind () []callbackHandler {
86+ return c .beforeFind
87+ }
88+
89+ func (c * Callback ) AfterFind () []callbackHandler {
90+ return c .afterFind
91+ }
92+
7493func (c * Callback ) Execute (ctx context.Context , opCtx * operation.OpContext , opType operation.OpType , opts ... any ) error {
7594 switch opType {
7695 case operation .OpTypeBeforeInsert :
@@ -158,6 +177,48 @@ func (c *Callback) Register(opType operation.OpType, name string, fn CbFn) {
158177 name : name ,
159178 fn : fn ,
160179 })
180+ case operation .OpTypeBeforeAny :
181+ c .beforeInsert = append (c .beforeInsert , callbackHandler {
182+ name : name ,
183+ fn : fn ,
184+ })
185+ c .beforeUpdate = append (c .beforeUpdate , callbackHandler {
186+ name : name ,
187+ fn : fn ,
188+ })
189+ c .beforeDelete = append (c .beforeDelete , callbackHandler {
190+ name : name ,
191+ fn : fn ,
192+ })
193+ c .beforeUpsert = append (c .beforeUpsert , callbackHandler {
194+ name : name ,
195+ fn : fn ,
196+ })
197+ c .beforeFind = append (c .beforeFind , callbackHandler {
198+ name : name ,
199+ fn : fn ,
200+ })
201+ case operation .OpTypeAfterAny :
202+ c .afterInsert = append (c .afterInsert , callbackHandler {
203+ name : name ,
204+ fn : fn ,
205+ })
206+ c .afterUpdate = append (c .afterUpdate , callbackHandler {
207+ name : name ,
208+ fn : fn ,
209+ })
210+ c .afterDelete = append (c .afterDelete , callbackHandler {
211+ name : name ,
212+ fn : fn ,
213+ })
214+ c .afterUpsert = append (c .afterUpsert , callbackHandler {
215+ name : name ,
216+ fn : fn ,
217+ })
218+ c .afterFind = append (c .afterFind , callbackHandler {
219+ name : name ,
220+ fn : fn ,
221+ })
161222 }
162223}
163224
@@ -183,6 +244,18 @@ func (c *Callback) Remove(opType operation.OpType, name string) {
183244 c .beforeFind = c .remove (c .beforeFind , name )
184245 case operation .OpTypeAfterFind :
185246 c .afterFind = c .remove (c .afterFind , name )
247+ case operation .OpTypeBeforeAny :
248+ c .beforeInsert = c .remove (c .beforeInsert , name )
249+ c .beforeUpdate = c .remove (c .beforeUpdate , name )
250+ c .beforeDelete = c .remove (c .beforeDelete , name )
251+ c .beforeUpsert = c .remove (c .beforeUpsert , name )
252+ c .beforeFind = c .remove (c .beforeFind , name )
253+ case operation .OpTypeAfterAny :
254+ c .afterInsert = c .remove (c .afterInsert , name )
255+ c .afterUpdate = c .remove (c .afterUpdate , name )
256+ c .afterDelete = c .remove (c .afterDelete , name )
257+ c .afterUpsert = c .remove (c .afterUpsert , name )
258+ c .afterFind = c .remove (c .afterFind , name )
186259 }
187260}
188261
0 commit comments