package entity_crud import ( "git.sxidc.com/go-framework/baize/framwork/domain/entity" "git.sxidc.com/go-framework/baize/framwork/infrastructure" "git.sxidc.com/go-framework/baize/framwork/infrastructure/database" ) type Callbacks[O any] struct { BeforeDBOperate func(e entity.Entity, i *infrastructure.Infrastructure, dbExecutor database.Executor) error AfterDBOperate func(e entity.Entity, i *infrastructure.Infrastructure, dbExecutor database.Executor) error OnSuccessReturn func(e entity.Entity, i *infrastructure.Infrastructure, output O) (O, error) OnErrorReturn func(e entity.Entity, err error, i *infrastructure.Infrastructure, defaultErrOutput O) (O, error) } func callbackBeforeDBOperate[O any](callbacks *Callbacks[O], e entity.Entity, i *infrastructure.Infrastructure, dbExecutor database.Executor) error { if callbacks == nil { return nil } if callbacks.BeforeDBOperate != nil { return callbacks.BeforeDBOperate(e, i, dbExecutor) } return nil } func callbackAfterDBOperate[O any](callbacks *Callbacks[O], e entity.Entity, i *infrastructure.Infrastructure, dbExecutor database.Executor) error { if callbacks == nil { return nil } if callbacks.AfterDBOperate != nil { return callbacks.AfterDBOperate(e, i, dbExecutor) } return nil } func callbackOnSuccessReturn[O any](callbacks *Callbacks[O], e entity.Entity, i *infrastructure.Infrastructure, output O) (O, error) { if callbacks == nil { return output, nil } if callbacks.OnSuccessReturn != nil { return callbacks.OnSuccessReturn(e, i, output) } return output, nil } func callbackOnErrorReturn[O any](callbacks *Callbacks[O], e entity.Entity, err error, i *infrastructure.Infrastructure, defaultErrOutput O) (O, error) { if callbacks == nil { return defaultErrOutput, err } if callbacks.OnErrorReturn != nil { return callbacks.OnErrorReturn(e, err, i, defaultErrOutput) } return defaultErrOutput, err }