callbacks.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package entity_crud
  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. OnReturn func(e domain.Entity, dbExecutor database.Executor, output O) (O, error)
  9. OnError func(e domain.Entity, err error, dbExecutor database.Executor, defaultErrOutput O) (O, error)
  10. }
  11. func callbackBeforeDBOperate[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor) error {
  12. if callbacks == nil {
  13. return nil
  14. }
  15. if callbacks.BeforeDBOperate == nil {
  16. return callbacks.BeforeDBOperate(e, dbExecutor)
  17. }
  18. return nil
  19. }
  20. func callbackOnReturn[O any](callbacks *Callbacks[O], e domain.Entity, dbExecutor database.Executor, output O) (O, error) {
  21. if callbacks == nil {
  22. return output, nil
  23. }
  24. if callbacks.OnReturn == nil {
  25. return callbacks.OnReturn(e, dbExecutor, output)
  26. }
  27. return output, nil
  28. }
  29. func callbackOnError[O any](callbacks *Callbacks[O], e domain.Entity, err error, dbExecutor database.Executor, defaultErrOutput O) (O, error) {
  30. if callbacks == nil {
  31. return defaultErrOutput, err
  32. }
  33. if callbacks.OnError == nil {
  34. return callbacks.OnError(e, err, dbExecutor, defaultErrOutput)
  35. }
  36. return defaultErrOutput, err
  37. }