1
我有一系列複雜的查詢,我正在使用Ecto在Elixir/Phoenix中運行。這些目標是使這些查詢適用於創建新條目和更新以前的行。爲此,我設想使用一個函數參數來定義我們是否正在更新表格。例如,現在我有以下功能:Elixir Ecto根據函數參數改變查詢
# Retrieves the stats on the user chargebacks
defp get_chargebacks(%{user_id: user_id} = map) do
query =
from u in Users,
left_join: c in ChargeBacks, on: [user_id: u.id],
where: u.id == ^user_id,
select: %{chargeback_amount_cents: sum(c.amount), chargeback_amount_count: count(c.user_id), chargeback_amount_currency: @default_currency},
group_by: u.id
result = query
|> RepoBVCore.one
Map.merge(map, Map.put(result, :chargeback_amount_cents, Map.get(result, :chargeback_amount_cents) || 0))
end
我想改變的功能,因此,這將是如下:
defp get_chargebacks(%{user_id: user_id} = map, is_update \\ false)
如果is_update = true
然後我會想添加一個另外where
條款的函數(例如):
where: c.amount > 100
我怎樣才能改變我原來的功能,有條件改變查詢語句?謝謝。
太好了,非常感謝! – user2694306