X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_bd.erl;h=93cb8356be84e89cdf73c953deef740931a39395;hp=89c983612fb09f9045597a118419f54767eb382f;hb=fdbd960f3fda4a5b1e71dc410ad162c78390f409;hpb=5b5b26154e2dcbc5dc0b16f833edb728bd1c8a2d diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 89c9836..93cb835 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -90,7 +90,7 @@ % utiles : resultat_transaction/1 ]). --import(qlc, [e/1, e/2, q/1, cursor/1]). +-import(qlc, [e/2, q/1, cursor/2]). -include("../include/euphorik_bd.hrl"). -include("../include/euphorik_defines.hrl"). -include_lib("stdlib/include/qlc.hrl"). @@ -304,7 +304,6 @@ update_pseudo_user(UserId, Pseudo) -> % Affiche N user trié par leur date de dernière connexion. -% Attention : pas d'index sur ce champs (la date) print_users(N) -> resultat_transaction(mnesia:transaction(fun() -> C = cursor( @@ -312,7 +311,8 @@ print_users(N) -> 9, q([E || E <- mnesia:table(user)]), [{order, descending}] - ) + ), + [{tmpdir, ?KEY_SORT_TEMP_DIR}] ), Users = qlc:next_answers(C, N), lists:foreach( @@ -365,7 +365,7 @@ print_user(Id) when is_integer(Id) -> user_by_cookie(Cookie) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([E || E <- mnesia:table(user), E#user.cookie =:= Cookie])) of + case e(q([E || E <- mnesia:table(user), E#user.cookie =:= Cookie]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [User] -> {ok, User}; _ -> erreur end @@ -376,7 +376,7 @@ user_by_cookie(Cookie) -> user_by_id(ID) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([E || E <- mnesia:table(user), E#user.id =:= ID])) of + case e(q([E || E <- mnesia:table(user), E#user.id =:= ID]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [User] -> {ok, User}; _ -> erreur end @@ -387,7 +387,7 @@ user_by_id(ID) -> user_by_login(Login) -> resultat_transaction(mnesia:transaction( fun() -> - Users = e(q([E || E <- mnesia:table(user), E#user.login =:= Login])), + Users = e(q([E || E <- mnesia:table(user), E#user.login =:= Login]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), case Users of [User] -> {ok, User}; _ -> erreur @@ -399,7 +399,7 @@ user_by_login(Login) -> toggle_ek_master(User_id) -> resultat_transaction(mnesia:transaction( fun() -> - Users = e(q([E || E <- mnesia:table(user), E#user.id =:= User_id])), + Users = e(q([E || E <- mnesia:table(user), E#user.id =:= User_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), case Users of [User] -> mnesia:write(User#user{ek_master = not User#user.ek_master}); @@ -419,12 +419,10 @@ css_from_user_cookie(Cookie) -> end. - - user_by_login_password(Login, Password) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([E || E <- mnesia:table(user), E#user.login =:= Login, E#user.password =:= Password])) of + case e(q([E || E <- mnesia:table(user), E#user.login =:= Login, E#user.password =:= Password]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [User | _] -> {ok, User}; _ -> erreur end @@ -436,7 +434,7 @@ user_by_login_password(Login, Password) -> user_by_mess(Id) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([U || U <- mnesia:table(user), M <- mnesia:table(minichat), M#minichat.id =:= Id, M#minichat.auteur_id =:= U#user.id])) of + case e(q([U || U <- mnesia:table(user), M <- mnesia:table(minichat), M#minichat.id =:= Id, M#minichat.auteur_id =:= U#user.id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [User | _] -> {ok, User}; _ -> erreur end @@ -449,9 +447,9 @@ user_by_mess(Id) -> nouveau_message(Mess, Auteur_id, Repond_A) -> % regarde si les id 'Repond_A' existent F = fun() -> - Nb_id_trouve = length(e(q([E#minichat.id || E <- mnesia:table(minichat), lists:member(E#minichat.id, Repond_A)]))), + Nb_id_trouve = length(e(q([E#minichat.id || E <- mnesia:table(minichat), lists:member(E#minichat.id, Repond_A)]), [{tmpdir, ?KEY_SORT_TEMP_DIR}])), % est-ce que l'auteur existe ? - Auteur = case e(q([E || E <- mnesia:table(user), E#user.id =:= Auteur_id])) of + Auteur = case e(q([E || E <- mnesia:table(user), E#user.id =:= Auteur_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [A] -> A; _ -> {erreur, "L'auteur du message est introuvable"} end, @@ -521,7 +519,8 @@ messages(N, P) -> 2, q([E#minichat{contenu = contenu_message(E)} || E <- mnesia:table(minichat)]), [{order, descending}] - ) + ), + [{tmpdir, ?KEY_SORT_TEMP_DIR}] ), if P > 1 -> qlc:next_answers(C, N * (P - 1)); true -> ok @@ -530,7 +529,7 @@ messages(N, P) -> qlc:delete_cursor(C), lists:reverse(R) end, - resultat_transaction(mnesia:transaction(F)). + resultat_transaction(mnesia:transaction(F)). % Renvoie les messages manquants pour la page P en sachant qu'il y a N message @@ -572,7 +571,7 @@ messages_by_ids(Ids) -> 2, q([E || E <- mnesia:table(minichat), lists:any(fun(Id) -> Id =:= E#minichat.id end, Ids)]), [{order, ascending}] - )) + ),[{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -581,14 +580,14 @@ messages_by_ids(Ids) -> % TODO : ya pas plus simple ? message_existe(Id) -> resultat_transaction(mnesia:transaction(fun() -> - length(e(q([E#minichat.id || E <- mnesia:table(minichat), E#minichat.id =:= Id]))) =:= 1 + length(e(q([E#minichat.id || E <- mnesia:table(minichat), E#minichat.id =:= Id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}])) =:= 1 end)). % Renvoie les reponses (utilisé normalement uniquement pendant le debug). reponses() -> F = fun() -> - e(q([E || E <- mnesia:table(reponse_minichat)])) + e(q([E || E <- mnesia:table(reponse_minichat)]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end, resultat_transaction(mnesia:transaction(F)). @@ -601,7 +600,7 @@ repond_a(M_id) -> [M || E <- mnesia:table(reponse_minichat), M <- mnesia:table(minichat), E#reponse_minichat.repondant =:= M_id, - M#minichat.id =:= E#reponse_minichat.cible])) + M#minichat.id =:= E#reponse_minichat.cible]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -613,7 +612,7 @@ est_une_reponse_a_user(Id_user, Id_mess) -> e(q([ M#minichat.auteur_id || M <- mnesia:table(minichat), R <- mnesia:table(reponse_minichat), M#minichat.auteur_id =:= Id_user, M#minichat.id =:= R#reponse_minichat.cible, R#reponse_minichat.repondant =:= Id_mess - ]), [{unique_all, true}]) + ]), [{unique_all, true}, {tmpdir, ?KEY_SORT_TEMP_DIR}]) end ) of {atomic, [_]} -> true; @@ -628,7 +627,7 @@ a_repondu_a_message(Id_user, Id_mess) -> e(q([ M#minichat.auteur_id || M <- mnesia:table(minichat), R <- mnesia:table(reponse_minichat), R#reponse_minichat.cible =:= Id_mess, R#reponse_minichat.repondant =:= M#minichat.id, M#minichat.auteur_id =:= Id_user - ]), [{unique_all, true}]) + ]), [{unique_all, true}, {tmpdir, ?KEY_SORT_TEMP_DIR}]) end ) of {atomic, [_]} -> true; @@ -640,7 +639,7 @@ a_repondu_a_message(Id_user, Id_mess) -> possede_message(Id_user, Id_mess) -> case mnesia:transaction( fun() -> - e(q([E#minichat.auteur_id || E <- mnesia:table(minichat), E#minichat.id =:= Id_mess])) + e(q([E#minichat.auteur_id || E <- mnesia:table(minichat), E#minichat.id =:= Id_mess]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end ) of {atomic, [Id_user | []]} -> true; @@ -659,11 +658,11 @@ list_ban() -> { IP#ip_table.ip, delta_date_minute(date_plus_minutes(IP#ip_table.ban, IP#ip_table.ban_duration), Now), - e(q([{U#user.pseudo, U#user.login} || U <- mnesia:table(user), U#user.last_ip =:= IP#ip_table.ip])) + e(q([{U#user.pseudo, U#user.login} || U <- mnesia:table(user), U#user.last_ip =:= IP#ip_table.ip]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) } || IP <- mnesia:table(ip_table), if IP#ip_table.ban =:= undefined -> false; true -> date_plus_minutes(IP#ip_table.ban, IP#ip_table.ban_duration) > Now end - ]))) + ])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -698,7 +697,7 @@ est_banni(User_id) -> U#user.id =:= User_id, IP <- mnesia:table(ip_table), IP#ip_table.ip =:= U#user.last_ip - ])) of + ]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [{Ban, Ban_duration}] -> Echeance = date_plus_minutes(Ban, Ban_duration), Now = now(), @@ -729,7 +728,7 @@ date_plus_minutes(Ban, Ban_duration) -> can_register(IP) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([I || I <- mnesia:table(ip_table), I#ip_table.ip =:= IP])) of + case e(q([I || I <- mnesia:table(ip_table), I#ip_table.ip =:= IP]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [] -> mnesia:write(#ip_table{ip = IP, date_last_try_register = now()}), true; @@ -754,7 +753,7 @@ can_register(IP) -> trolls() -> resultat_transaction(mnesia:transaction( fun() -> - e(qlc:keysort(2, q([T || T <- mnesia:table(troll)]))) + e(qlc:keysort(2, q([T || T <- mnesia:table(troll)])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -763,7 +762,7 @@ trolls() -> trolls(Last_id) -> resultat_transaction(mnesia:transaction( fun() -> - e(qlc:keysort(2, q([T || T <- mnesia:table(troll), T#troll.id > Last_id, T#troll.date_post =:= undefined]))) + e(qlc:keysort(2, q([T || T <- mnesia:table(troll), T#troll.id > Last_id, T#troll.date_post =:= undefined])), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) end )). @@ -783,13 +782,13 @@ put_troll(User_id, Content) -> E#troll.id_user =:= User_id, E#troll.date_post =:= undefined ] - ))), + ), [{tmpdir, ?KEY_SORT_TEMP_DIR}])), Nb_troll_poste_total = length(e(q( [ E#troll.id || E <- mnesia:table(troll), E#troll.date_post =:= undefined ] - ))), + ), [{tmpdir, ?KEY_SORT_TEMP_DIR}])), User = user_by_id(User_id), case User of {ok, _} -> @@ -839,7 +838,7 @@ del_troll(Troll_id) -> troll_by_id(Troll_id) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([T || T <- mnesia:table(troll), T#troll.id =:= Troll_id])) of + case e(q([T || T <- mnesia:table(troll), T#troll.id =:= Troll_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [T] -> {ok, T}; _ -> erreur @@ -854,7 +853,7 @@ current_troll() -> resultat_transaction(mnesia:transaction( fun() -> % TODO : ya pas moyen de désigner le champs plutot qu'avec un nombre pour le tri ? - C = cursor(qlc:keysort(5, q([T || T <- mnesia:table(troll), T#troll.date_post =/= undefined]), [{order, descending}])), + C = cursor(qlc:keysort(5, q([T || T <- mnesia:table(troll), T#troll.date_post =/= undefined]), [{order, descending}]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]), R = case qlc:next_answers(C, 1) of [T] -> T; _ -> aucun @@ -874,7 +873,7 @@ elire_troll() -> random:seed(A1, A2, A3), mnesia:transaction( fun() -> - case e(q([T || T <- mnesia:table(troll), T#troll.date_post =:= undefined])) of + case e(q([T || T <- mnesia:table(troll), T#troll.date_post =:= undefined]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [] -> plus_de_trolls; Trolls -> @@ -892,7 +891,7 @@ elire_troll() -> message_id_associe(Troll_id) -> resultat_transaction(mnesia:transaction( fun() -> - case e(q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.troll_id =:= Troll_id])) of + case e(q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.troll_id =:= Troll_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of [Id] -> Id; _ -> undefined end