X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd_update.erl;h=4c722848b48f277c7f8beb96b0fd5d5d577f4752;hp=a0456bc7b8b17dacae5b66e865fac5bbb47e17d5;hb=f39b28682e1e41cd487a2268320552b687640adf;hpb=fe508652111984ab4f2707a36d5ced39aaaf5cac diff --git a/modules/erl/euphorik_bd_update.erl b/modules/erl/euphorik_bd_update.erl index a0456bc..4c72284 100644 --- a/modules/erl/euphorik_bd_update.erl +++ b/modules/erl/euphorik_bd_update.erl @@ -24,6 +24,7 @@ -export([ version_bd/0, update/0, + backup/1, restore/1 ]). -import(qlc, [e/2, q/1, cursor/2]). @@ -56,7 +57,7 @@ update() -> % attention : il est nécessaire de se trouver dans une transaction. update(?VERSION_BD) -> fini; update(Version) -> - case mnesia:backup(mnesia:system_info(directory) ++ "/backup" ++ integer_to_list(Version)) of + case mnesia:backup(fichier_backup(Version)) of ok -> case patch(Version) of ok -> @@ -78,7 +79,7 @@ patch(1) -> mnesia:transform_table( user, fun({user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, Css, Nick_format, View_times, View_tooltips, Indice_flood, _Page_principale, Conversations, Ek_master, Last_ip}) -> - {user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, Css, Nick_format, View_times, View_tooltips, reverse, Indice_flood, lists:map(fun({C, _}) -> C end, Conversations), Ek_master, Last_ip} + {user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, patch1_transforme_css(Css), Nick_format, View_times, View_tooltips, light, reverse, Indice_flood, lists:map(fun({R, _}) -> {R, false} end, Conversations), Ek_master, Last_ip} end, record_info(fields, user), user @@ -106,6 +107,14 @@ patch(1) -> %patch(2) -> +% Prend un chemin vers la feuille de style de type "css/1/euphorik.css" +% et renvoie "styles/1/euphorik.css" +patch1_transforme_css(["css" | Reste]) -> + ["styles" | Reste]; +patch1_transforme_css(F) -> + F. + + patch_1_traiter_message(M, Racine) -> % met à jour la racine de chaque message qui répond à M lists:foreach( @@ -116,9 +125,18 @@ patch_1_traiter_message(M, Racine) -> euphorik_bd:enfants(M#minichat.id) ). +% 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). + % 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(mnesia:system_info(directory) ++ "/backup" ++ integer_to_list(N)). +restore(N) when is_integer(N) -> + mnesia:restore(fichier_backup(N), [{default_op, recreate_tables}]); +restore(Nom) when is_string(Nom) -> + +% Renvoie le fichier (avec le chemin) correspondant à la version Version, par exemple : "/var/euphorik/BD/backups/backup1" +fichier_backup(Version) -> + mnesia:system_info(directory) ++ "/backups/backup" ++ integer_to_list(Version).