ADD backup lors d'un upgrade de la base
[euphorik.git] / modules / erl / euphorik_bd.erl
index 6dff985..c3bbc58 100755 (executable)
@@ -189,11 +189,17 @@ update() ->
 % attention : il est nécessaire de se trouver dans une transaction.
 update(?VERSION_BD) -> fini;
 update(Version) ->
-   patch(Version),
-   update(Version + 1).
+   case mnesia:backup(mnesia:system_info(directory) ++ "/backup" ++ integer_to_list(Version)) of
+      ok ->
+         patch(Version),
+         update(Version + 1);
+      {error, Raison} -> {error, lists:flatten(io_lib:format("Erreur de création du backup de la version ~w : ~w", [Version, Raison]))}
+   end.
    
    
 % Applique une modification de la BD pour passer d'une version à la suivante.
+% crée un backup avant l'application du patch
+% dans BD/backups nommé "backup<num>" où <num> et le numéro de la version.
 % 1 -> 2
 patch(1) ->
    ok.
@@ -201,6 +207,12 @@ patch(1) ->
 %patch(2) ->
 
 
+% Reviens à une version précédente de la base de données
+% (les insérés durant les versions plus récentes sont perdues données sont perdues)
+restore(N) ->
+   mnesia:restore(mnesia:system_info(directory) ++ "/backup" ++ integer_to_list(N)).
+
+
 % Ajoute un nouveau user et le renvoie
 nouveau_user(Pseudo, Cookie) ->
    F = fun() ->