X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd_admin.erl;h=20da1fa6396a9cf2e6deda8a595fdaceb116d395;hp=38fabfe0a3f9d835e4bed3f6e3279bd1c9c6c6d7;hb=c219198926b679ef5bc28182b3d05e8c1f447886;hpb=4dfbbcf0f54cb3eb70856ea404d9ecef6aec5e26 diff --git a/modules/erl/euphorik_bd_admin.erl b/modules/erl/euphorik_bd_admin.erl index 38fabfe..20da1fa 100644 --- a/modules/erl/euphorik_bd_admin.erl +++ b/modules/erl/euphorik_bd_admin.erl @@ -24,6 +24,7 @@ % % @author G.Burri + -module(euphorik_bd_admin). -export([ version_bd/0, @@ -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, @@ -77,20 +79,21 @@ create_tables() -> {attributes, record_info(fields, proprietes)}, {disc_copies, [node()]} ]), + mnesia:create_table(texte, [ + {attributes, record_info(fields, texte)}, + {disc_copies, [node()]} + ]), 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 +102,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 @@ -116,6 +129,7 @@ connect(Node) -> reset() -> mnesia:clear_table(counter), mnesia:clear_table(proprietes), + mnesia:clear_table(texte), mnesia:clear_table(user), mnesia:clear_table(reponse_minichat), mnesia:clear_table(minichat), @@ -129,6 +143,34 @@ reset() -> User end). + +peupler_texte() -> + mnesia:transaction(fun() -> + mnesia:write(#texte{ id = 10, fr = "Login déjà existant"}), + mnesia:write(#texte{ id = 20, fr = "Trop de register (flood)"}), + mnesia:write(#texte{ id = 30, fr = "Couple login/pass introuvable"}), + mnesia:write(#texte{ id = 40, fr = "Authentification impossible par cookie"}), + mnesia:write(#texte{ id = 50, fr = "Impossible de mettre à jour le profile"}), + mnesia:write(#texte{ id = 60, fr = "timeout"}), + mnesia:write(#texte{ id = 70, fr = "Page inconnue"}), + mnesia:write(#texte{ id = 80, fr = "Vous êtes banni pour encore ~w"}), + mnesia:write(#texte{ id = 90, fr = "Message vide"}), + mnesia:write(#texte{ id = 100, fr = "Impossible d'ajouter un nouveau message. Raison : ~w"}), + mnesia:write(#texte{ id = 110, fr = "Utilisateur inconnu"}), + mnesia:write(#texte{ id = 120, fr = "Il n'est pas possible de s'auto bannir"}), + mnesia:write(#texte{ id = 130, fr = "L'utilisateur est lui même un ekMaster"}), + mnesia:write(#texte{ id = 140, fr = "Utilisateur à bannir inconnu"}), + mnesia:write(#texte{ id = 150, fr = "Utilisateur inconnu ou non ek master"}), + mnesia:write(#texte{ id = 160, fr = "Utilisateur à slaper inconnu"}), + mnesia:write(#texte{ id = 170, fr = "Utilisateur inconnu ou non ek master"}), + mnesia:write(#texte{ id = 180, fr = "Le nombre de troll maximum par utilisateur est atteint : ~w "}), + mnesia:write(#texte{ id = 190, fr = "Le nombre de troll maximum en attente est atteint : ~w "}), + mnesia:write(#texte{ id = 200, fr = "Seul les ekMaster peuvent proposer des trolls"}), + mnesia:write(#texte{ id = 210, fr = "Vous ne posséder pas ce troll"}), + mnesia:write(#texte{ id = 220, fr = "Seul les ekMaster peuvent proposer des trolls"}), + mnesia:write(#texte{ id = 230, fr = "Seul les ekMaster peuvent connaitre la liste des ips bannies"}) + end). + % Met à jour la bd, compare ?VERSION_BD avec la version dans la table 'proprietes' % et exécute les patchs nécessaires. @@ -163,6 +205,11 @@ update(Version) -> % dans BD/backups nommé "backup" où et le numéro de la version. % 1 -> 2 patch(1) -> + mnesia:create_table(texte, [ + {attributes, record_info(fields, texte)}, + {disc_copies, [node()]} + ]), + peupler_texte(), % traitement des users mnesia:transform_table( user, @@ -191,14 +238,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 +259,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 +274,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() ->