Skip to content

Commit a24302b

Browse files
committed
Group sent records by person_id using SELECT DISTINCT ON #33 (comment)
1 parent 8dc696a commit a24302b

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

lib/app/ctx.ex

+9-7
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,29 @@ defmodule App.Ctx do
2828
"""
2929
def list_sent_with_status do
3030
query = """
31-
SELECT s.id, s.message_id, s.updated_at, s.template,
32-
st.text as status, s.person_id, p.email
33-
FROM sent s
34-
JOIN status as st on s.status_id = st.id
35-
JOIN people as p on s.person_id = p.id
36-
ORDER BY s.updated_at DESC
31+
SELECT DISTINCT ON (s.status_id, s.person_id) s.id, s.message_id,
32+
s.updated_at, s.template, st.text as status, s.person_id, p.email
33+
FROM sent s
34+
JOIN status as st on s.status_id = st.id
35+
JOIN people as p on s.person_id = p.id
36+
WHERE s.message_id IS NOT NULL
3737
"""
3838
{:ok, result} = Repo.query(query)
3939

4040
# create List of Maps from the result.rows:
4141
Enum.map(result.rows, fn([id, mid, iat, t, s, pid, e]) ->
42+
e = Fields.AES.decrypt(e) # |> String.split("@") |> List.first
4243
%{
4344
id: id,
4445
message_id: mid,
4546
inserted_at: NaiveDateTime.truncate(iat, :second),
4647
template: t,
4748
status: s,
4849
person_id: pid,
49-
email: Fields.AES.decrypt(e)
50+
email: e
5051
}
5152
end)
53+
# |>
5254
end
5355

5456

0 commit comments

Comments
 (0)