X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=b11b4e61a00aec79455cd114ec56e19d663163fa;hp=4e470993240cd4649307dd840e27f0c7d8fbc3a2;hb=fe508652111984ab4f2707a36d5ced39aaaf5cac;hpb=9ca81343a4899d1d6080e88f5c9870d10706ce1b diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 4e47099..b11b4e6 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -29,8 +29,6 @@ connect/0, connect/1, reset/0, - update/0, - restore/1, % users : nouveau_user/2, @@ -50,7 +48,7 @@ toggle_ek_master/1, css_from_user_cookie/1, - % messages : + % messages :e nouveau_message/3, nouveau_message_sys/1, nouveau_message_sys/2, @@ -61,7 +59,8 @@ messages_by_ids/1, message_existe/1, reponses/0, - repond_a/1, + parents/1, + enfants/1, est_une_reponse_a_user/2, a_repondu_a_message/2, possede_message/2, @@ -84,9 +83,6 @@ elire_troll/0, message_id_associe/1, - % versions : - update_version/1, - % utiles : resultat_transaction/1 ]). @@ -171,73 +167,6 @@ reset() -> end). -% Met à jour la bd, compare ?VERSION_BD avec la version dans la table 'proprietes' -% et exécute les patchs nécessaires. -update() -> - mnesia:transaction( - fun() -> - case mnesia:read({proprietes, version}) of - [#proprietes{nom = Version}] -> - update(Version); - _ -> - erreur - end - end - ). - - -% Mise à jour de la BD. -% 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 - ok -> - case patch(Version) of - ok -> - mnesia:write(#proprietes{nom = version, valeur = Version + 1}), - update(Version + 1); - _ -> - erreur - end; - {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" où et le numéro de la version. -% 1 -> 2 -patch(1) -> - % traitement des users - 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} - end, - record_info(fields, user), - user - ), - mnesia:transform_table( - minichat, - fun({minichat, Id, Auteur_id, Date, Pseudo, Contenu, Troll_id}) -> - {minichat, Id, Auteur_id, Date, Pseudo, Contenu, Troll_id, Id} - end, - record_info(fields, minichat), - minichat - ), - % met à jour les racines des messages - TODO ! -> mnesia:foldl(...) - ok. -% 2 -> 3 -%patch(2) -> - - -% 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)). - - % Ajoute un nouveau user et le renvoie nouveau_user(Pseudo, Cookie) -> F = fun() -> @@ -640,27 +569,27 @@ reponses() -> % Renvoie les messages auquel M_id répond. -repond_a(M_id) -> +parents(M_id) -> resultat_transaction(mnesia:transaction( fun() -> e(q( - [M || E <- mnesia:table(reponse_minichat), + [M || R <- mnesia:table(reponse_minichat), M <- mnesia:table(minichat), - E#reponse_minichat.repondant =:= M_id, - M#minichat.id =:= E#reponse_minichat.cible]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + R#reponse_minichat.repondant =:= M_id, + M#minichat.id =:= R#reponse_minichat.cible]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). % Renvoie les message qui repondent à M_id -reponses(M_id) -> +enfants(M_id) -> resultat_transaction(mnesia:transaction( fun() -> e(q( - [M || E <- mnesia:table(reponse_minichat), + [M || R <- mnesia:table(reponse_minichat), M <- mnesia:table(minichat), - E#reponse_minichat.cible =:= M_id, - M#minichat.id =:= E#reponse_minichat.repondant]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) + R#reponse_minichat.cible =:= M_id, + M#minichat.id =:= R#reponse_minichat.repondant]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -956,16 +885,7 @@ message_id_associe(Troll_id) -> end end )). - - -update_version(1) -> - mnesia:transform_table( - ip_table, - fun() -> null end, - record_info(fields, ip_table), - ip_table - ). - + % Renvoie le résultat d'une transaction (en décomposant le tuple fournit) resultat_transaction({_, T}) ->