ADD fonction pour restaurer une BD à partir d'un fichier texte dans euphorik_bd_admin
authorGreg Burri <greg.burri@gmail.com>
Sun, 27 Jul 2008 22:01:56 +0000 (22:01 +0000)
committerGreg Burri <greg.burri@gmail.com>
Sun, 27 Jul 2008 22:01:56 +0000 (22:01 +0000)
FIX mineur dans les tests

modules/erl/euphorik_bd.erl
modules/erl/euphorik_bd_admin.erl
modules/erl/euphorik_test.erl

index f2acb7a..80130d0 100755 (executable)
@@ -265,7 +265,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) ->
       ), \r
       Racine_id = case Repond_a of\r
          [] -> undefined;\r
-         [M | _ ] -> \r
+         [M | _] -> \r
             Une_racine = M#minichat.racine_id,\r
             % vérification que tout les messages de Repond_a possède la même racine (même conversation)\r
             case lists:all(fun(R) -> R#minichat.racine_id =:= Une_racine end, Repond_a) of\r
@@ -274,7 +274,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) ->
                _ ->\r
                   {erreur, "Les messages ne font pas partie de la même conversation"}\r
             end\r
-      end,      \r
+      end,\r
       case Racine_id of\r
          {erreur, E} -> {erreur, E};\r
          _ ->\r
index 12c2d4d..843d830 100644 (file)
@@ -32,8 +32,9 @@
    connect/1,
    reset/0,
    update/0,
-   backup/1,
-   restore/1,
+   
+   backup_text/1,
+   restore_text/1,
    
    toggle_ek_master/1,
    print_users/0,
@@ -219,14 +220,14 @@ patch_1_traiter_message(M, Racine) ->
    ).
 
 % crée un backup dont le nom est fournit dans le repertoire backups qui se trouve dans le repertoire de la BD.
-backup(Nom) ->
-   mnesia:backup(mnesia:system_info(directory) ++ "/backups/" ++ Nom).
+%backup(Nom) ->
+%   mnesia:backup(mnesia:system_info(directory) ++ "/backups/" ++ Nom).
    
 
 % Reviens à une version précédente de la base de données
 % (les données insérées durant les versions plus récentes sont perdues)
-restore(N) ->
-   mnesia:restore(fichier_backup(N), [{default_op, recreate_tables}]).
+%restore(N) ->
+%   mnesia:restore(fichier_backup(N), [{default_op, recreate_tables}]).
 
 
 % Renvoie le fichier (avec le chemin) correspondant à la version Version, par exemple : "/var/euphorik/BD/backups/backup1"
@@ -234,6 +235,20 @@ fichier_backup(Version) ->
    mnesia:system_info(directory) ++ "/backups/" ++ if is_integer(Version) -> "backup" ++ integer_to_list(Version); true -> Version end.
 
 
+backup_text(_) -> todo.
+restore_text(File) -> 
+   mnesia:stop(),
+   mnesia:delete_schema([node()]),
+   mnesia:start(),
+   case mnesia:load_textfile(File) of
+      {atomic, ok} ->
+         update(),
+         creer_indexes();
+      Erreur ->
+         Erreur
+   end.
+
+
 toggle_ek_master(User_id) ->
    euphorik_bd:resultat_transaction(mnesia:transaction(
       fun() ->
index 88b9f68..867131a 100644 (file)
@@ -147,7 +147,9 @@ messages_id_rand() ->
 
 % tire N element distinct parmis la liste L proposée
 tire_element_rand(N, L) when N =< length(L) ->
-   tire_element_rand(N, L, []).
+   tire_element_rand(N, L, []);
+tire_element_rand(_, _) ->
+   [].
 tire_element_rand(0, _, Elements) -> Elements;
 tire_element_rand(N, L, Elements) ->
    E = lists:nth(random:uniform(length(L)), L),
@@ -166,6 +168,12 @@ loop(User_id, M) ->
    % poste un message aléatoire par une personne aléatoire répondant à des messages aléatoires
    {Message, Repond_a} = {message_rand(), messages_id_rand()},
    io:format("~p poste ~p et repond a ~w~n", [User_id, Message, Repond_a]),
-   euphorik_bd:nouveau_message(Message, User_id, Repond_a),
-   loop(User_id, M - 1).
+   case euphorik_bd:nouveau_message(Message, User_id, Repond_a) of
+      {erreur, E} -> 
+         io:format("~p : erreur : ~p~n", [User_id, E]),
+         loop(User_id, M);
+      _ ->
+         loop(User_id, M - 1)
+   end.
+   
    
\ No newline at end of file