Guest User

Untitled

a guest
Feb 21st, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. field :subtotal, :float do
  2. resolve fn _, _->
  3. batch({SomeModule, :batch_totals}, [:subtotal], fn results ->
  4. {:ok, results.subtotal}
  5. end)
  6. end
  7. end
  8.  
  9. field :discount, :float do
  10. resolve fn _, _->
  11. batch({SomeModule, :batch_totals}, [:discount], fn results ->
  12. {:ok, results.discount}
  13. end)
  14. end
  15. end
  16.  
  17. field :grand_total, :float do
  18. resolve fn _, _ ->
  19. batch({SomeModule, :batch_totals}, [:subtotal, :discount], fn results ->
  20. grand_total = results.subtotal - results.discount
  21. {:ok, grand_total}
  22. end)
  23. end
  24. end
  25.  
  26. # in SomeModule
  27. def batch_totals(_, desired_fields) do
  28. desired_fields
  29. |> List.flatten
  30. |> Enum.uniq
  31. |> Map.new(fn
  32. :subtotal -> {:subtotal, expensive_func1()},
  33. :discount -> {:discount, expensive_func2()},
  34. end)
  35. end
Add Comment
Please, Sign In to add comment