X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=f1d5a601e6cc7db50dcc9cff5aeb2983cdb3e2e8;hp=4fecb737d8f19afd2da9d276746cb902e0229e15;hb=85dc0facbc2b2de826978fac3768db7949a6b92f;hpb=455f79e2ab07847ea6697e51245288832ae9fede diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 4fecb73..f1d5a60 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -79,7 +79,8 @@ elire_troll/0, % utiles : - resultat_transaction/1 + resultat_transaction/1, + get_tuples/3 % must be in a transaction ]). -import(qlc, [e/2, q/1, cursor/2]). -include("../include/euphorik_bd.hrl"). @@ -373,23 +374,22 @@ messages(N) -> messages(N, P) -> F = fun() -> % % #minichat{contenu = contenu_message(E)} - get_tuples_avant(minichat, reculer(minichat, mnesia:last(minichat), N * (P - 1)), N) + get_tuples(minichat, mnesia:table_info(minichat, size) - N * P + 1, N) end, resultat_transaction(mnesia:transaction(F)). -get_tuples_avant(Table, Id, N) -> - get_tuples_avant(Table, Id, N, []). -get_tuples_avant(_, '$end_of_table', _, Tuples) -> Tuples; -get_tuples_avant(_, _, 0, Tuples) -> - Tuples; -get_tuples_avant(Table, Id, N, Tuples) -> - [T] = mnesia:read({Table, Id}), - get_tuples_avant(Table, mnesia:prev(Table, Id), N - 1, [T | Tuples]). -reculer(_, '$end_of_table' = Fin, _) -> Fin; -reculer(_, Id, 0) -> Id; -reculer(Table, Id, N) -> - reculer(Table, mnesia:prev(Table, Id), N - 1). +get_tuples(Table, First_id, N) -> + lists:foldr( + fun(Id, Acc) -> + case mnesia:read({Table, Id}) of + [T] -> [T | Acc]; + _ -> Acc + end + end, + [], + lists:seq(First_id, First_id + N - 1) + ). % Renvoie les messages manquants pour la page P en sachant qu'il y a N message @@ -715,7 +715,7 @@ put_troll(User_id, Content) -> Nb_troll_poste_total >= ?NB_MAX_TROLL_WAITING -> max_troll_reached; true -> - Id = nouvel_id(minichat), + Id = nouvel_id(troll), mnesia:write(#troll{id = Id, id_user = User_id, date_create = now(), content = Content}), Id end;