From: Greg Burri Date: Sun, 27 Jul 2008 22:01:56 +0000 (+0000) Subject: ADD fonction pour restaurer une BD à partir d'un fichier texte dans euphorik_bd_admin X-Git-Tag: 1.1.0~35 X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=commitdiff_plain;h=9aec6848a87dcccac15aea762cc6d5bb18ff731a ADD fonction pour restaurer une BD à partir d'un fichier texte dans euphorik_bd_admin FIX mineur dans les tests --- diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index f2acb7a..80130d0 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -265,7 +265,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) -> ), Racine_id = case Repond_a of [] -> undefined; - [M | _ ] -> + [M | _] -> Une_racine = M#minichat.racine_id, % vérification que tout les messages de Repond_a possède la même racine (même conversation) case lists:all(fun(R) -> R#minichat.racine_id =:= Une_racine end, Repond_a) of @@ -274,7 +274,7 @@ nouveau_message(Mess, Auteur_id, Repond_A_ids) -> _ -> {erreur, "Les messages ne font pas partie de la même conversation"} end - end, + end, case Racine_id of {erreur, E} -> {erreur, E}; _ -> diff --git a/modules/erl/euphorik_bd_admin.erl b/modules/erl/euphorik_bd_admin.erl index 12c2d4d..843d830 100644 --- a/modules/erl/euphorik_bd_admin.erl +++ b/modules/erl/euphorik_bd_admin.erl @@ -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() -> diff --git a/modules/erl/euphorik_test.erl b/modules/erl/euphorik_test.erl index 88b9f68..867131a 100644 --- a/modules/erl/euphorik_test.erl +++ b/modules/erl/euphorik_test.erl @@ -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