service_callbacks.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package entity
  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(e domain.Entity, dbExecutor database.Executor) error
  8. AfterDBOperate func(e domain.Entity, dbExecutor database.Executor) error
  9. OnSuccessReturn func(e domain.Entity, dbExecutor database.Executor, output O) (O, error)
  10. OnErrorReturn func(e domain.Entity, err error, dbExecutor database.Executor, defaultErrOutput O) (O, error)
  11. }
  12. func callbackBeforeDBOperate[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor) error {
  13. if callbacks == nil {
  14. return nil
  15. }
  16. if callbacks.BeforeDBOperate == nil {
  17. return callbacks.BeforeDBOperate(e, dbExecutor)
  18. }
  19. return nil
  20. }
  21. func callbackAfterDBOperate[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor) error {
  22. if callbacks == nil {
  23. return nil
  24. }
  25. if callbacks.AfterDBOperate == nil {
  26. return callbacks.AfterDBOperate(e, dbExecutor)
  27. }
  28. return nil
  29. }
  30. func callbackOnSuccessReturn[O any](callbacks *Callbacks[O], e domain.Entity, 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(e, dbExecutor, output)
  36. }
  37. return output, nil
  38. }
  39. func callbackOnErrorReturn[O any](callbacks *Callbacks[O], e domain.Entity, 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(e, err, dbExecutor, defaultErrOutput)
  45. }
  46. return defaultErrOutput, err
  47. }