X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd_admin.erl;h=7412337409656ba32190ce7175c61d2f1e655954;hp=38fabfe0a3f9d835e4bed3f6e3279bd1c9c6c6d7;hb=ba4387c6afaaa2964c28292e7fbd1c35b3404ce5;hpb=4dfbbcf0f54cb3eb70856ea404d9ecef6aec5e26 diff --git a/modules/erl/euphorik_bd_admin.erl b/modules/erl/euphorik_bd_admin.erl index 38fabfe..7412337 100644 --- a/modules/erl/euphorik_bd_admin.erl +++ b/modules/erl/euphorik_bd_admin.erl @@ -23,6 +23,7 @@ % - Copie de la BD à partir d'un autre noeud % % @author G.Burri + -module(euphorik_bd_admin). -export([ @@ -32,8 +33,9 @@ connect/1, reset/0, update/0, - backup/1, - restore/1, + + backup_text/1, + restore_text/1, toggle_ek_master/1, print_users/0, @@ -79,18 +81,15 @@ create_tables() -> ]), mnesia:create_table(minichat, [ {attributes, record_info(fields, minichat)}, - {index, [auteur_id, troll_id]}, {disc_copies, [node()]} ]), mnesia:create_table(reponse_minichat, [ {type, bag}, {attributes, record_info(fields, reponse_minichat)}, - {index, [cible]}, {disc_copies, [node()]} ]), mnesia:create_table(user, [ {attributes, record_info(fields, user)}, - {index, [cookie, login]}, {disc_copies, [node()]} ]), mnesia:create_table(ip_table, [ @@ -99,9 +98,19 @@ create_tables() -> ]), mnesia:create_table(troll, [ {attributes, record_info(fields, troll)}, - {index, [date_post]}, {disc_copies, [node()]} - ]). + ]), + creer_indexes(). + + +% 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). % Connexion à la base de données de yaws sur overnux @@ -191,14 +200,12 @@ patch(1) -> {aborted, Raison} -> {erreur, Raison}; {atomic, _} -> ok end. -% 2 -> 3 -%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("css" ++ Reste) -> + "styles" ++ Reste; patch1_transforme_css(F) -> F. @@ -214,14 +221,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" @@ -229,6 +236,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() ->