summaryrefslogtreecommitdiff
path: root/src/mod_caps_sql.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2016-05-04 21:01:05 +0300
committerAlexey Shchepin <alexey@process-one.net>2016-05-05 15:51:58 +0300
commit0ea0ba3004282636c95bc86c3aac8755fcf7f8b1 (patch)
tree1330b6db70f7f6100c1997851faece5ad569391f /src/mod_caps_sql.erl
parentMerge remote-tracking branch 'processone/pr/1088' (diff)
Update more SQL queries
Diffstat (limited to 'src/mod_caps_sql.erl')
-rw-r--r--src/mod_caps_sql.erl40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/mod_caps_sql.erl b/src/mod_caps_sql.erl
index 9f587db3..5faff98b 100644
--- a/src/mod_caps_sql.erl
+++ b/src/mod_caps_sql.erl
@@ -9,10 +9,13 @@
-module(mod_caps_sql).
-behaviour(mod_caps).
+-compile([{parse_transform, ejabberd_sql_pt}]).
+
%% API
-export([init/2, caps_read/2, caps_write/3, export/1]).
-include("mod_caps.hrl").
+-include("ejabberd_sql_pt.hrl").
%%%===================================================================
%%% API
@@ -21,21 +24,19 @@ init(_Host, _Opts) ->
ok.
caps_read(LServer, {Node, SubNode}) ->
- SNode = ejabberd_sql:escape(Node),
- SSubNode = ejabberd_sql:escape(SubNode),
case ejabberd_sql:sql_query(
- LServer, [<<"select feature from caps_features where ">>,
- <<"node='">>, SNode, <<"' and subnode='">>,
- SSubNode, <<"';">>]) of
- {selected, [<<"feature">>], [[H]|_] = Fs} ->
- case catch jlib:binary_to_integer(H) of
- Int when is_integer(Int), Int>=0 ->
- {ok, Int};
- _ ->
- {ok, lists:flatten(Fs)}
- end;
- _ ->
- error
+ LServer,
+ ?SQL("select @(feature)s from caps_features where"
+ " node=%(Node)s and subnode=%(SubNode)s")) of
+ {selected, [{H}|_] = Fs} ->
+ case catch jlib:binary_to_integer(H) of
+ Int when is_integer(Int), Int>=0 ->
+ {ok, Int};
+ _ ->
+ {ok, [F || {F} <- Fs]}
+ end;
+ _ ->
+ error
end.
caps_write(LServer, NodePair, Features) ->
@@ -56,16 +57,13 @@ export(_Server) ->
%%% Internal functions
%%%===================================================================
sql_write_features_t({Node, SubNode}, Features) ->
- SNode = ejabberd_sql:escape(Node),
- SSubNode = ejabberd_sql:escape(SubNode),
NewFeatures = if is_integer(Features) ->
[jlib:integer_to_binary(Features)];
true ->
Features
end,
- [[<<"delete from caps_features where node='">>,
- SNode, <<"' and subnode='">>, SSubNode, <<"';">>]|
- [[<<"insert into caps_features(node, subnode, feature) ">>,
- <<"values ('">>, SNode, <<"', '">>, SSubNode, <<"', '">>,
- ejabberd_sql:escape(F), <<"');">>] || F <- NewFeatures]].
+ [?SQL("delete from caps_features where node=%(Node)s"
+ " and subnode=%(SubNode)s;") |
+ [?SQL("insert into caps_features(node, subnode, feature)"
+ " values (%(Node)s, %(SubNode)s, %(F)s);") || F <- NewFeatures]].