FIX #81 (pas testé)
authorGreg Burri <greg.burri@gmail.com>
Fri, 3 Oct 2008 12:43:40 +0000 (12:43 +0000)
committerGreg Burri <greg.burri@gmail.com>
Fri, 3 Oct 2008 12:43:40 +0000 (12:43 +0000)
modules/erl/euphorik_bd.erl
modules/erl/euphorik_bd_admin.erl
modules/erl/euphorik_protocole.erl

index 55aa7bc..cfd0bfd 100755 (executable)
@@ -46,7 +46,6 @@
    % messages :\r
    nouveau_message/3,\r
    nouveau_message_sys/1,\r
-   nouveau_message_sys/2,\r
    messages/1,\r
    messages/2,\r
    messages/3,\r
@@ -78,7 +77,6 @@
    troll_by_id/1,\r
    current_troll/0,\r
    elire_troll/0,\r
-   message_id_associe/1,\r
    \r
    % utiles :\r
    resultat_transaction/1\r
@@ -352,16 +350,11 @@ inserer_reponses(_, []) ->
 % Permet de créer un message système.\r
 % Renvoie l'id du message système\r
 nouveau_message_sys(Mess) ->\r
-   nouveau_message_sys(Mess, undefined).\r
-   \r
-\r
-% Création d'un message système lié à un troll.\r
-nouveau_message_sys(Mess, Troll_id) ->\r
    {ok, #user{profile = Profile}} = user_by_id(0),\r
    resultat_transaction(mnesia:transaction(\r
       fun() ->\r
          Id = nouvel_id(minichat),\r
-         mnesia:write(#minichat{id = Id, auteur_id = 0, date = now(), pseudo = Profile#profile.pseudo, contenu = Mess, troll_id = Troll_id, racine_id = Id}),\r
+         mnesia:write(#minichat{id = Id, auteur_id = 0, date = now(), pseudo = Profile#profile.pseudo, contenu = Mess, racine_id = Id}),\r
          Id\r
       end\r
    )).\r
@@ -412,9 +405,9 @@ message_by_id(Id) ->
    \r
    \r
 % Renvoie le contenu d'un message donnée en fonction du troll associé, à utiliser à l'intérieur d'une transaction.\r
-% TODO : Cette fonction pourrait être remplacé par un "outer-join", est-ce possible avec qlc ?\r
+% TODO : Cette fonction pourrait être remplacée par un "outer-join", est-ce possible avec qlc ?\r
 contenu_message(E) ->\r
-   case mnesia:read({troll, E#minichat.troll_id}) of\r
+   case mnesia:index_read(troll, E#minichat.id, #troll.id_minichat) of\r
       [] -> E#minichat.contenu;\r
       [T] -> E#minichat.contenu ++ T#troll.content\r
    end.\r
@@ -796,26 +789,13 @@ elire_troll() ->
                plus_de_trolls;\r
             Trolls ->\r
                Troll = lists:nth(random:uniform(length(Trolls)), Trolls),\r
-               Troll2 = Troll#troll{date_post = now()},\r
-               mnesia:write(Troll2),\r
-               nouveau_message_sys("Troll de la semaine : ", Troll2#troll.id)\r
+               Id_message = nouveau_message_sys("Troll de la semaine : "),\r
+               Troll2 = Troll#troll{date_post = now(), id_minichat = Id_message},\r
+               mnesia:write(Troll2)\r
          end\r
       end\r
    ).\r
    \r
-\r
-% Renvoie l'id du message associé au troll dont l'id est donnée.\r
-% Renvoie undefined si il n'y en a pas.\r
-message_id_associe(Troll_id) ->\r
-   resultat_transaction(mnesia:transaction(\r
-      fun() ->\r
-         case e(q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.troll_id =:= Troll_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of\r
-            [Id] -> Id;\r
-            _ -> undefined\r
-         end\r
-      end\r
-   )).\r
-\r
    \r
 % Renvoie le résultat d'une transaction (en décomposant le tuple fournit)\r
 resultat_transaction({_, T}) ->\r
index d9e9cc7..64ea4ac 100644 (file)
@@ -110,11 +110,11 @@ create_tables() ->
 % mis à part car lors de la reprise de données avec load_textfile les indexes ne sont pas recréés
 creer_indexes() ->
    mnesia:add_table_index(minichat, auteur_id),
-   mnesia:add_table_index(minichat, troll_id),
    mnesia:add_table_index(reponse_minichat, cible),
    mnesia:add_table_index(user, cookie),
    mnesia:add_table_index(user, login),
-   mnesia:add_table_index(troll, date_post).
+   mnesia:add_table_index(troll, date_post),\r
+   mnesia:add_table_index(troll, id_minichat).
    
    
 % Connexion à la base de données de yaws sur overnux
@@ -262,7 +262,6 @@ patch(1) ->
    end;\r
 % 2 -> 3\r
 patch(2) ->\r
-   % traitement de la table troll\r
    mnesia:transform_table(\r
       troll,\r
       fun({troll, Id_troll, Id_user, Date_create, Date_post, Content}) ->\r
@@ -275,8 +274,17 @@ patch(2) ->
       end,\r
       record_info(fields, troll),\r
       user\r
-   )\r
-   TODO...\r
+   ),\r
+   mnesia:del_table_index(minichat, troll_id),\r
+   mnesia:transform_table(\r
+      minichat,\r
+      fun({minichat, Id, Auteur_id, Date, Pseudo, Contenu, _Troll_id, Racine_id}) ->\r
+         {minichat, Id, Auteur_id, Date, Pseudo, Contenu, Racine_id}\r
+      end,\r
+      record_info(fields, troll),\r
+      user\r
+   ),   \r
+   creer_indexes(). % uniquement pour l'indice sur id_minichat de la table troll\r
    \r
 
 % crée un backup dont le nom est fournit dans le repertoire backups qui se trouve dans le repertoire de la BD.
index a34eae6..1fb3cc1 100755 (executable)
@@ -283,7 +283,7 @@ wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id
          {struct, [\r
             {reply, "new_troll"},\r
             {troll_id, Current#troll.id},\r
-            {message_id, euphorik_bd:message_id_associe(Current#troll.id)},\r
+            {message_id, Current#troll.id_minichat},\r
             {content, Current#troll.content}\r
          ]};\r
       _ ->\r