X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=f2acb7aee51970eccc0842c906efe3caf54c5652;hp=1cd534ea74c0638e9f7a434dd851b0f2b5e044e4;hb=e0c2c2fa82cf13cd55b8d5006ad2c7e0689dc6cb;hpb=7e5121be583a78ecd2cca8553717959d121df226 diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 1cd534e..f2acb7a 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -179,7 +179,7 @@ update_pseudo_user(UserId, Pseudo) -> user_by_cookie(Cookie) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([E || E <- mnesia:table(user), E#user.cookie =:= Cookie]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of + case mnesia:index_read(user, Cookie, #user.cookie) of [User] -> {ok, User}; _ -> erreur end @@ -455,33 +455,45 @@ enfants(M_id) -> )). -% Renvoie les parents d'un message M (les messages auquels répond M) +% Renvoie les id des parents d'un message M (les messages auquels répond M) % ordrés du plus petit au plus grand.. +% On évite d'utiliser qlc pour des raisons de performance % @spec parents_id(integer()) -> [integer()] -parents_id(M) -> +parents_id(M_id) -> resultat_transaction(mnesia:transaction(fun() -> - e( - qlc:sort( - q([E#reponse_minichat.cible || E <- mnesia:table(reponse_minichat), E#reponse_minichat.repondant =:= M]), - [{order, ascending}] - ), - [{tmpdir, ?KEY_SORT_TEMP_DIR}] - ) + case mnesia:read({reponse_minichat, M_id}) of + Parents when is_list(Parents) -> + lists:sort(lists:map( + fun(#reponse_minichat{cible = Cible}) -> Cible end, + Parents + )); + _ -> [] + end end)). % Renvoie les id des enfants d'un message M (les messages qui répondent à M) % ordrés du plus petit au plus grand. % @spec enfants_id(integer()) -> [integer()] -enfants_id(M) -> +enfants_id(M_id) -> +% resultat_transaction(mnesia:transaction(fun() -> +% e( +% qlc:sort( +% q([E#reponse_minichat.repondant || E <- mnesia:table(reponse_minichat), E#reponse_minichat.cible =:= M]), +% [{order, ascending}] +% ), +% [{tmpdir, ?KEY_SORT_TEMP_DIR}] +% ) +% end)). resultat_transaction(mnesia:transaction(fun() -> - e( - qlc:sort( - q([E#reponse_minichat.repondant || E <- mnesia:table(reponse_minichat), E#reponse_minichat.cible =:= M]), - [{order, ascending}] - ), - [{tmpdir, ?KEY_SORT_TEMP_DIR}] - ) + case mnesia:index_read(reponse_minichat, M_id, #reponse_minichat.cible) of + Enfants when is_list(Enfants) -> + lists:sort(lists:map( + fun(#reponse_minichat{repondant = Repondant}) -> Repondant end, + Enfants + )); + _ -> [] + end end)). @@ -512,7 +524,7 @@ est_une_reponse_a_user(Id_user, Id_mess) -> a_repondu_a_message(Id_user, Id_mess) -> resultat_transaction(mnesia:transaction( fun() -> - case mnesia:match_object({reponse_minichat, '_', Id_mess}) of + case mnesia:index_read(reponse_minichat, Id_mess, #reponse_minichat.cible) of [] -> false; Reponses -> lists:any(