package entity_crud import ( "git.sxidc.com/go-framework/baize/domain" "git.sxidc.com/go-framework/baize/infrastructure/database" ) type Callbacks[O any] struct { BeforeDBOperate func(e domain.Entity, dbExecutor database.Executor) error OnReturn func(e domain.Entity, dbExecutor database.Executor, output O) (O, error) OnError func(e domain.Entity, err error, dbExecutor database.Executor, defaultErrOutput O) (O, error) } func callbackBeforeDBOperate[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor) error { if callbacks == nil { return nil } if callbacks.BeforeDBOperate == nil { return callbacks.BeforeDBOperate(e, dbExecutor) } return nil } func callbackOnReturn[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor, output O) (O, error) { if callbacks == nil { return output, nil } if callbacks.OnReturn == nil { return callbacks.OnReturn(e, dbExecutor, output) } return output, nil } func callbackOnError[O any](callbacks *Callbacks[O], e domain.Entity, err error, dbExecutor database.Executor, defaultErrOutput O) (O, error) { if callbacks == nil { return defaultErrOutput, err } if callbacks.OnError == nil { return callbacks.OnError(e, err, dbExecutor, defaultErrOutput) } return defaultErrOutput, err }