aboutsummaryrefslogtreecommitdiff
path: root/src/pubsub_db_sql.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/pubsub_db_sql.erl')
-rw-r--r--src/pubsub_db_sql.erl50
1 files changed, 24 insertions, 26 deletions
diff --git a/src/pubsub_db_sql.erl b/src/pubsub_db_sql.erl
index 4df6a8695..558b696cb 100644
--- a/src/pubsub_db_sql.erl
+++ b/src/pubsub_db_sql.erl
@@ -40,13 +40,12 @@
%% -spec read_subscription(SubID :: string()) -> {ok, #pubsub_subscription{}} | notfound.
read_subscription(SubID) ->
case
- ejabberd_sql:sql_query_t([<<"select opt_name, opt_value from pubsub_subscr"
- "iption_opt where subid = '">>,
- ejabberd_sql:escape(SubID), <<"'">>])
+ ejabberd_sql:sql_query_t(
+ ?SQL("select @(opt_name)s, @(opt_value)s from pubsub_subscription_opt where subid = %(SubID)s"))
of
- {selected, [<<"opt_name">>, <<"opt_value">>], []} ->
+ {selected, []} ->
notfound;
- {selected, [<<"opt_name">>, <<"opt_value">>], Options} ->
+ {selected, Options} ->
{ok,
#pubsub_subscription{subid = SubID,
options = lists:map(fun subscription_opt_from_sql/1, Options)}}
@@ -57,48 +56,47 @@ delete_subscription(SubID) ->
%% -spec update_subscription(#pubsub_subscription{}) -> ok .
%% -spec add_subscription(#pubsub_subscription{}) -> ok.
%% -------------- Internal utilities -----------------------
- ejabberd_sql:sql_query_t([<<"delete from pubsub_subscription_opt "
- "where subid = '">>,
- ejabberd_sql:escape(SubID), <<"'">>]),
+ ejabberd_sql:sql_query_t(
+ ?SQL("delete from pubsub_subscription_opt "
+ "where subid = %(SubID)s")),
ok.
update_subscription(#pubsub_subscription{subid = SubId} = Sub) ->
delete_subscription(SubId), add_subscription(Sub).
add_subscription(#pubsub_subscription{subid = SubId, options = Opts}) ->
- EscapedSubId = ejabberd_sql:escape(SubId),
- lists:foreach(fun (Opt) ->
- {OdbcOptName, OdbcOptValue} = subscription_opt_to_sql(Opt),
- ejabberd_sql:sql_query_t([<<"insert into pubsub_subscription_opt(subid, "
- "opt_name, opt_value)values ('">>,
- EscapedSubId, <<"','">>,
- OdbcOptName, <<"','">>,
- OdbcOptValue, <<"')">>])
- end,
- Opts),
+ lists:foreach(
+ fun(Opt) ->
+ {OdbcOptName, OdbcOptValue} = subscription_opt_to_sql(Opt),
+ ejabberd_sql:sql_query_t(
+ ?SQL("insert into pubsub_subscription_opt(subid, "
+ "opt_name, opt_value) values "
+ "(%(SubId)s, %(OdbcOptName)s, %(OdbcOptValue)s)"))
+ end,
+ Opts),
ok.
-subscription_opt_from_sql([<<"DELIVER">>, Value]) ->
+subscription_opt_from_sql({<<"DELIVER">>, Value}) ->
{deliver, sql_to_boolean(Value)};
-subscription_opt_from_sql([<<"DIGEST">>, Value]) ->
+subscription_opt_from_sql({<<"DIGEST">>, Value}) ->
{digest, sql_to_boolean(Value)};
-subscription_opt_from_sql([<<"DIGEST_FREQUENCY">>, Value]) ->
+subscription_opt_from_sql({<<"DIGEST_FREQUENCY">>, Value}) ->
{digest_frequency, sql_to_integer(Value)};
-subscription_opt_from_sql([<<"EXPIRE">>, Value]) ->
+subscription_opt_from_sql({<<"EXPIRE">>, Value}) ->
{expire, sql_to_timestamp(Value)};
-subscription_opt_from_sql([<<"INCLUDE_BODY">>, Value]) ->
+subscription_opt_from_sql({<<"INCLUDE_BODY">>, Value}) ->
{include_body, sql_to_boolean(Value)};
%%TODO: might be > than 1 show_values value??.
%% need to use compact all in only 1 opt.
-subscription_opt_from_sql([<<"SHOW_VALUES">>, Value]) ->
+subscription_opt_from_sql({<<"SHOW_VALUES">>, Value}) ->
{show_values, Value};
-subscription_opt_from_sql([<<"SUBSCRIPTION_TYPE">>, Value]) ->
+subscription_opt_from_sql({<<"SUBSCRIPTION_TYPE">>, Value}) ->
{subscription_type,
case Value of
<<"items">> -> items;
<<"nodes">> -> nodes
end};
-subscription_opt_from_sql([<<"SUBSCRIPTION_DEPTH">>, Value]) ->
+subscription_opt_from_sql({<<"SUBSCRIPTION_DEPTH">>, Value}) ->
{subscription_depth,
case Value of
<<"all">> -> all;