Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- field :subtotal, :float do
- resolve fn _, _->
- batch({SomeModule, :batch_totals}, [:subtotal], fn results ->
- {:ok, results.subtotal}
- end)
- end
- end
- field :discount, :float do
- resolve fn _, _->
- batch({SomeModule, :batch_totals}, [:discount], fn results ->
- {:ok, results.discount}
- end)
- end
- end
- field :grand_total, :float do
- resolve fn _, _ ->
- batch({SomeModule, :batch_totals}, [:subtotal, :discount], fn results ->
- grand_total = results.subtotal - results.discount
- {:ok, grand_total}
- end)
- end
- end
- # in SomeModule
- def batch_totals(_, desired_fields) do
- desired_fields
- |> List.flatten
- |> Enum.uniq
- |> Map.new(fn
- :subtotal -> {:subtotal, expensive_func1()},
- :discount -> {:discount, expensive_func2()},
- end)
- end
Add Comment
Please, Sign In to add comment