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