% Ajoute les parents de chaque message.
% @spec mise_en_forme_conversation([integer()]) -> [{integer(), [integer()]}]
mise_en_forme_conversation(Messages) ->
- lists:foldr(
- fun(Id, Acc) ->
- case euphorik_bd:message_by_id(Id) of
- {ok, Message} ->
- [{Message, parents(Id)} | Acc];
- _ ->
- Acc
- end
- end,
- [],
- Messages
- ).
-
+ resultat_transaction(mnesia:transaction(
+ fun() ->
+ lists:foldr(
+ fun(Id, Acc) ->
+ case euphorik_bd:message_by_id_sans_transaction(Id) of
+ {ok, Message} ->
+ [{Message, parents(Id)} | Acc];
+ _ ->
+ Acc
+ end
+ end,
+ [],
+ Messages
+ )
+ end
+ )).
+
% Renvoie une liste de conversations, le première élément correspond à la conversation principale.
% Les autres éléments sont des tuples {C, Cn, X}, voir conversation/4 pour plus d'infos.
% @spec enfants(integer()) -> [integer()]
enfants(M) ->
resultat_transaction(transaction(fun() ->
- e(q([E#reponse_minichat.repondant || E <- qlc:sort(table(reponse_minichat), [{order, ascending}]), E#reponse_minichat.cible =:= M]))
+ e(
+ qlc:sort(
+ q([E#reponse_minichat.repondant || E <- table(reponse_minichat), E#reponse_minichat.cible =:= M]),
+ [{order, ascending}]
+ )
+ )
end)).
% @spec parents(integer()) -> [integer()]
parents(M) ->
resultat_transaction(transaction(fun() ->
- e(q([E#reponse_minichat.cible || E <- keysort(1, table(reponse_minichat), [{order, ascending}]), E#reponse_minichat.repondant =:= M]))
+ e(
+ qlc:sort(
+ q([E#reponse_minichat.cible || E <- table(reponse_minichat), E#reponse_minichat.repondant =:= M]),
+ [{order, ascending}]
+ )
+ )
end)).