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