X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=2b18d5b24cb38ba87fd5791dfee231768d9f25ff;hp=93cb8356be84e89cdf73c953deef740931a39395;hb=63d7601eeee2660728be1ff778dd7e6a04246ee5;hpb=fdbd960f3fda4a5b1e71dc410ad162c78390f409 diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 93cb835..2b18d5b 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -57,7 +57,6 @@ messages/2, messages/3, message_by_id/1, - message_by_id_sans_transaction/1, messages_by_ids/1, message_existe/1, reponses/0, @@ -308,7 +307,7 @@ print_users(N) -> resultat_transaction(mnesia:transaction(fun() -> C = cursor( qlc:keysort( - 9, + #user.date_derniere_connexion, q([E || E <- mnesia:table(user)]), [{order, descending}] ), @@ -331,14 +330,16 @@ print_users() -> print_user(User) when is_record(User, user) -> - #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = User, + #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date, last_ip = IP} = User, {{Annee, Mois, Jour}, {Heure, Min, _}} = calendar:now_to_local_time(Date), io:format( - "~4w : ~10.10..s~10.10..s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n", + % id pseudo (login) IP Jour Mois Année Heure Minute + "~4w : ~10.10..s(~10.10..s) ~s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n", [ Id, if Ek_master -> "*"; true -> "" end ++ Pseudo, - "(" ++ Login ++ ")", + Login, + euphorik_common:serialize_ip(IP), Jour, Mois, Annee, Heure, Min ] ); @@ -516,7 +517,7 @@ messages(N, P) -> F = fun() -> C = cursor( qlc:keysort( - 2, + #minichat.id, q([E#minichat{contenu = contenu_message(E)} || E <- mnesia:table(minichat)]), [{order, descending}] ), @@ -542,15 +543,13 @@ messages(Id, N, P) -> message_by_id(Id) -> resultat_transaction(mnesia:transaction( fun() -> - message_by_id_sans_transaction(Id) + case mnesia:read({minichat, Id}) of + [] -> erreur; + [M] -> + {ok, M#minichat{contenu = contenu_message(M)}} + end end )). -message_by_id_sans_transaction(Id) -> - case mnesia:read({minichat, Id}) of - [] -> erreur; - [M] -> - {ok, M#minichat{contenu = contenu_message(M)}} - end. % Renvoie le contenu d'un message donnée, à utiliser à l'intérieur d'une transaction. @@ -563,12 +562,13 @@ contenu_message(E) -> % Renvoie une liste de message (voir #minichat de euphorik_bd.hrl) à partir d'une liste d'id (Ids). +% TODO : optimisations ? serait-ce du O(n) ? +% Bon de toutes façons on s'en fout c'est pas utilisé :) messages_by_ids(Ids) -> resultat_transaction(mnesia:transaction( fun() -> - % TODO : optimisations ? serait-ce du O(n) ? e(qlc:keysort( - 2, + #minichat.id, q([E || E <- mnesia:table(minichat), lists:any(fun(Id) -> Id =:= E#minichat.id end, Ids)]), [{order, ascending}] ),[{tmpdir, ?KEY_SORT_TEMP_DIR}]) @@ -753,7 +753,7 @@ can_register(IP) -> trolls() -> resultat_transaction(mnesia:transaction( fun() -> - e(qlc:keysort(2, q([T || T <- mnesia:table(troll)])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + e(qlc:keysort(#troll.id, q([T || T <- mnesia:table(troll)])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -762,7 +762,7 @@ trolls() -> trolls(Last_id) -> resultat_transaction(mnesia:transaction( fun() -> - e(qlc:keysort(2, q([T || T <- mnesia:table(troll), T#troll.id > Last_id, T#troll.date_post =:= undefined])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + e(qlc:keysort(#troll.id, q([T || T <- mnesia:table(troll), T#troll.id > Last_id, T#troll.date_post =:= undefined])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -852,8 +852,7 @@ troll_by_id(Troll_id) -> current_troll() -> resultat_transaction(mnesia:transaction( fun() -> - % TODO : ya pas moyen de désigner le champs plutot qu'avec un nombre pour le tri ? - C = cursor(qlc:keysort(5, q([T || T <- mnesia:table(troll), T#troll.date_post =/= undefined]), [{order, descending}]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), + C = cursor(qlc:keysort(#troll.date_post, q([T || T <- mnesia:table(troll), T#troll.date_post =/= undefined]), [{order, descending}]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), R = case qlc:next_answers(C, 1) of [T] -> T; _ -> aucun