package entity 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 AfterDBOperate func(e domain.Entity, dbExecutor database.Executor) error OnSuccessReturn func(e domain.Entity, dbExecutor database.Executor, output O) (O, error) OnErrorReturn 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 callbackAfterDBOperate[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor) error { if callbacks == nil { return nil } if callbacks.AfterDBOperate == nil { return callbacks.AfterDBOperate(e, dbExecutor) } return nil } func callbackOnSuccessReturn[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor, output O) (O, error) { if callbacks == nil { return output, nil } if callbacks.OnSuccessReturn == nil { return callbacks.OnSuccessReturn(e, dbExecutor, output) } return output, nil } func callbackOnErrorReturn[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.OnErrorReturn == nil { return callbacks.OnErrorReturn(e, err, dbExecutor, defaultErrOutput) } return defaultErrOutput, err }