REPORT de la branche 1.0
[euphorik.git] / modules / erl / euphorik_bd.erl
index 93cb835..2b18d5b 100755 (executable)
@@ -57,7 +57,6 @@
    messages/2,\r
    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