Small optimization in mod_roster_sql:get_roster

This commit is contained in:
Alexey Shchepin 2021-09-21 12:10:00 +03:00
parent 32cf44827d
commit bf068f5659
1 changed files with 4 additions and 6 deletions

View File

@ -80,9 +80,10 @@ get_roster(LUser, LServer) ->
[]
end,
GroupsDict = lists:foldl(fun({J, G}, Acc) ->
dict:append(J, G, Acc)
Gs = maps:get(J, Acc, []),
maps:put(J, [G | Gs], Acc)
end,
dict:new(), JIDGroups),
maps:new(), JIDGroups),
{ok, lists:flatmap(
fun(I) ->
case raw_to_record(LServer, I) of
@ -90,10 +91,7 @@ get_roster(LUser, LServer) ->
error -> [];
R ->
SJID = jid:encode(R#roster.jid),
Groups = case dict:find(SJID, GroupsDict) of
{ok, Gs} -> Gs;
error -> []
end,
Groups = maps:get(SJID, GroupsDict, []),
[R#roster{groups = Groups}]
end
end, Items)};