usage_log_create_result.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package service
  2. import "errors"
  3. type usageLogCreateDisposition int
  4. const (
  5. usageLogCreateDispositionUnknown usageLogCreateDisposition = iota
  6. usageLogCreateDispositionNotPersisted
  7. usageLogCreateDispositionDropped
  8. )
  9. type UsageLogCreateError struct {
  10. err error
  11. disposition usageLogCreateDisposition
  12. }
  13. func (e *UsageLogCreateError) Error() string {
  14. if e == nil || e.err == nil {
  15. return "usage log create error"
  16. }
  17. return e.err.Error()
  18. }
  19. func (e *UsageLogCreateError) Unwrap() error {
  20. if e == nil {
  21. return nil
  22. }
  23. return e.err
  24. }
  25. func MarkUsageLogCreateNotPersisted(err error) error {
  26. if err == nil {
  27. return nil
  28. }
  29. return &UsageLogCreateError{
  30. err: err,
  31. disposition: usageLogCreateDispositionNotPersisted,
  32. }
  33. }
  34. func MarkUsageLogCreateDropped(err error) error {
  35. if err == nil {
  36. return nil
  37. }
  38. return &UsageLogCreateError{
  39. err: err,
  40. disposition: usageLogCreateDispositionDropped,
  41. }
  42. }
  43. func IsUsageLogCreateNotPersisted(err error) bool {
  44. if err == nil {
  45. return false
  46. }
  47. var target *UsageLogCreateError
  48. if !errors.As(err, &target) {
  49. return false
  50. }
  51. return target.disposition == usageLogCreateDispositionNotPersisted
  52. }
  53. func IsUsageLogCreateDropped(err error) bool {
  54. if err == nil {
  55. return false
  56. }
  57. var target *UsageLogCreateError
  58. if !errors.As(err, &target) {
  59. return false
  60. }
  61. return target.disposition == usageLogCreateDispositionDropped
  62. }
  63. func ShouldBillAfterUsageLogCreate(inserted bool, err error) bool {
  64. if inserted {
  65. return true
  66. }
  67. if err == nil {
  68. return false
  69. }
  70. return !IsUsageLogCreateNotPersisted(err)
  71. }