Yep, this is a pattern I use super often. I keep meaning to find a way to pipeline it better, but I just tend to have long repeated sets of this small ‘mutation’ chunks (copy/pasted from my sources):
query =
case refine do
[pidm: pidm] when is_integer(pidm) -> where(query, [s], s.spriden_pidm == ^pidm)
[pidm: pidms] when is_list(pidms) -> where(query, [s], s.spriden_pidm in ^pidms)
[cnum: cnum] when is_binary(cnum) -> where(query, [s], s.spriden_id == ^cnum)
[cnum: cnums] when is_list(cnums) -> where(query, [s], s.spriden_id in ^cnums)
[id: id] when is_binary(id) -> where(query, [s], s.spriden_id == ^id)
[id: ids] when is_list(ids) -> where(query, [s], s.spriden_id in ^ids)
[] -> query
end
Obviously I don’t use the formatter because it absolutely destroys the readability of these… I wish it could be fixed… ![]()


















