elire_troll/0,\r
\r
% utiles :\r
- resultat_transaction/1\r
+ resultat_transaction/1,
+ get_tuples/3 % must be in a transaction\r
]).\r
-import(qlc, [e/2, q/1, cursor/2]).\r
-include("../include/euphorik_bd.hrl").\r
messages(N, P) ->\r
F = fun() ->
% % #minichat{contenu = contenu_message(E)}
- get_tuples_avant(minichat, reculer(minichat, mnesia:last(minichat), N * (P - 1)), N) \r
+ get_tuples(minichat, mnesia:table_info(minichat, size) - N * P + 1, N)\r
end,\r
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)
+ ).
\r
\r
% Renvoie les messages manquants pour la page P en sachant qu'il y a N message\r
Nb_troll_poste_total >= ?NB_MAX_TROLL_WAITING ->\r
max_troll_reached;\r
true ->\r
- Id = nouvel_id(minichat),\r
+ Id = nouvel_id(troll),\r
mnesia:write(#troll{id = Id, id_user = User_id, date_create = now(), content = Content}),\r
Id\r
end;\r