service_callbacks.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package value_object
  2. import (
  3. "git.sxidc.com/go-framework/baize/domain"
  4. "git.sxidc.com/go-framework/baize/infrastructure/database"
  5. )
  6. type Callbacks[O any] struct {
  7. BeforeDBOperate func(valueObject domain.ValueObject, dbExecutor database.Executor) error
  8. AfterDBOperate func(valueObject domain.ValueObject, dbExecutor database.Executor) error
  9. OnSuccessReturn func(valueObject domain.ValueObject, dbExecutor database.Executor, output O) (O, error)
  10. OnErrorReturn func(valueObject domain.ValueObject, err error, dbExecutor database.Executor, defaultErrOutput O) (O, error)
  11. }
  12. func callbackBeforeDBOperate[O any](callbacks *Callbacks[O], valueObject domain.ValueObject, dbExecutor database.Executor) error {
  13. if callbacks == nil {
  14. return nil
  15. }
  16. if callbacks.BeforeDBOperate == nil {
  17. return callbacks.BeforeDBOperate(valueObject, dbExecutor)
  18. }
  19. return nil
  20. }
  21. func callbackAfterDBOperate[O any](callbacks *Callbacks[O], valueObject domain.ValueObject, dbExecutor database.Executor) error {
  22. if callbacks == nil {
  23. return nil
  24. }
  25. if callbacks.AfterDBOperate == nil {
  26. return callbacks.AfterDBOperate(valueObject, dbExecutor)
  27. }
  28. return nil
  29. }
  30. func callbackOnSuccessReturn[O any](callbacks *Callbacks[O], valueObject domain.ValueObject, dbExecutor database.Executor, output O) (O, error) {
  31. if callbacks == nil {
  32. return output, nil
  33. }
  34. if callbacks.OnSuccessReturn == nil {
  35. return callbacks.OnSuccessReturn(valueObject, dbExecutor, output)
  36. }
  37. return output, nil
  38. }
  39. func callbackOnErrorReturn[O any](callbacks *Callbacks[O], valueObject domain.ValueObject, err error, dbExecutor database.Executor, defaultErrOutput O) (O, error) {
  40. if callbacks == nil {
  41. return defaultErrOutput, err
  42. }
  43. if callbacks.OnErrorReturn == nil {
  44. return callbacks.OnErrorReturn(valueObject, err, dbExecutor, defaultErrOutput)
  45. }
  46. return defaultErrOutput, err
  47. }