]> granicus.if.org Git - ejabberd/commitdiff
Update mod_last SQL queries to the new API
authorAlexey Shchepin <alexey@process-one.net>
Thu, 18 Feb 2016 15:49:14 +0000 (18:49 +0300)
committerAlexey Shchepin <alexey@process-one.net>
Tue, 1 Mar 2016 21:12:49 +0000 (00:12 +0300)
src/mod_last.erl
src/odbc_queries.erl

index d76b604918eb2b84d58d748be40f50c1344ec955..33f88e0202e3e4c85e103e7c19bc282e367c362b 100644 (file)
@@ -185,18 +185,12 @@ get_last(LUser, LServer, riak) ->
             Err
     end;
 get_last(LUser, LServer, odbc) ->
-    Username = ejabberd_odbc:escape(LUser),
-    case catch odbc_queries:get_last(LServer, Username) of
-      {selected, [<<"seconds">>, <<"state">>], []} ->
-         not_found;
-      {selected, [<<"seconds">>, <<"state">>],
-       [[STimeStamp, Status]]} ->
-         case catch jlib:binary_to_integer(STimeStamp) of
-           TimeStamp when is_integer(TimeStamp) ->
-               {ok, TimeStamp, Status};
-           Reason -> {error, {invalid_timestamp, Reason}}
-         end;
-      Reason -> {error, {invalid_result, Reason}}
+    case catch odbc_queries:get_last(LServer, LUser) of
+        {selected, []} ->
+            not_found;
+        {selected, [{TimeStamp, Status}]} ->
+            {ok, TimeStamp, Status};
+        Reason -> {error, {invalid_result, Reason}}
     end.
 
 get_last_iq(IQ, SubEl, LUser, LServer) ->
@@ -260,12 +254,7 @@ store_last_info(LUser, LServer, TimeStamp, Status,
                               last_activity_schema())};
 store_last_info(LUser, LServer, TimeStamp, Status,
                odbc) ->
-    Username = ejabberd_odbc:escape(LUser),
-    Seconds =
-       ejabberd_odbc:escape(iolist_to_binary(integer_to_list(TimeStamp))),
-    State = ejabberd_odbc:escape(Status),
-    odbc_queries:set_last_t(LServer, Username, Seconds,
-                           State).
+    odbc_queries:set_last_t(LServer, LUser, TimeStamp, Status).
 
 %% @spec (LUser::string(), LServer::string()) ->
 %%      {ok, TimeStamp::integer(), Status::string()} | not_found
@@ -286,8 +275,7 @@ remove_user(LUser, LServer, mnesia) ->
     F = fun () -> mnesia:delete({last_activity, US}) end,
     mnesia:transaction(F);
 remove_user(LUser, LServer, odbc) ->
-    Username = ejabberd_odbc:escape(LUser),
-    odbc_queries:del_last(LServer, Username);
+    odbc_queries:del_last(LServer, LUser);
 remove_user(LUser, LServer, riak) ->
     {atomic, ejabberd_riak:delete(last_activity, {LUser, LServer})}.
 
index b6c9a36c0ebd4827e00ca1723660f2561129d6d8..283e33dfe97148fb825eb2219259134b85c01da8 100644 (file)
@@ -122,22 +122,22 @@ update(LServer, Table, Fields, Vals, Where) ->
 sql_transaction(LServer, F) ->
     ejabberd_odbc:sql_transaction(LServer, F).
 
-get_last(LServer, Username) ->
-    ejabberd_odbc:sql_query(LServer,
-                           [<<"select seconds, state from last where "
-                              "username='">>,
-                            Username, <<"'">>]).
+get_last(LServer, LUser) ->
+    ejabberd_odbc:sql_query(
+      LServer,
+      ?SQL("select @(seconds)d, @(state)s from last"
+           " where username=%(LUser)s")).
 
-set_last_t(LServer, Username, Seconds, State) ->
-    update(LServer, <<"last">>,
-          [<<"username">>, <<"seconds">>, <<"state">>],
-          [Username, Seconds, State],
-          [<<"username='">>, Username, <<"'">>]).
+set_last_t(LServer, LUser, TimeStamp, Status) ->
+    ?SQL_UPSERT(LServer, "last",
+                ["!username=%(LUser)s",
+                 "seconds=%(TimeStamp)d",
+                 "state=%(Status)s"]).
 
-del_last(LServer, Username) ->
-    ejabberd_odbc:sql_query(LServer,
-                           [<<"delete from last where username='">>, Username,
-                            <<"'">>]).
+del_last(LServer, LUser) ->
+    ejabberd_odbc:sql_query(
+      LServer,
+      ?SQL("delete from last where username=%(LUser)s")).
 
 get_password(LServer, LUser) ->
     ejabberd_odbc:sql_query(