I am trying to working on a query builder and the example/content is just imaginary.
query = from en in Data.InfectionRevision
query = from q in query, select: map(q, [:is_complete, :is_active])
query = from(q in query,select_merge: %{"$aggregate": %{"$max": %{^"revision_id" => max(q.revision_id)}}})
query = from(q in query,group_by: q.encounter_id,
select_merge: %{"$group" => %{^"encounter_id" => q.encounter_id}})
But the query I get is having incorrect key for group, although I have passed correct key while building query. this is what I got
#Ecto.Query<from i0 in Data.InfectionRevision, group_by: [i0.encounter_id],
select: merge(merge(
map(i0, [:is_complete, :is_active]),
%{"$aggregate": %{"$max": %{^"revision_id" => max(i0.revision_id)}}}),
%{"$group" => %{^"revision_id" => i0.encounter_id}})>
%{"$group" => %{^"revision_id" => i0.encounter_id}}
should be actually %{"$group" => %{^"encounter_id" => i0.encounter_id}}
What Step or part of the query I am building wrong? How to fix it?
Note:
- sample project on which you can run/build above queries
- Please ignore the query content, it might not makes sense because its just an example and should work dynamically as its part of dynamic query builder
- I need to build query step by step from passed params dynamically