aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2015-03-30 12:15:29 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2015-03-30 12:15:29 +0300
commit4af15df546a7a51780d5f612194d15b4a4ec786a (patch)
treebe09f3eb0e7e7cdec156dd26fa3659bae0baf9a1 /src
parentTry to fix more Dialyzer warnings (diff)
Add new 'default_db' option
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_riak_sup.erl2
-rw-r--r--src/gen_mod.erl34
-rw-r--r--src/mod_announce.erl2
-rw-r--r--src/mod_caps.erl2
-rw-r--r--src/mod_irc.erl2
-rw-r--r--src/mod_last.erl2
-rw-r--r--src/mod_muc.erl2
-rw-r--r--src/mod_offline.erl2
-rw-r--r--src/mod_privacy.erl2
-rw-r--r--src/mod_private.erl2
-rw-r--r--src/mod_roster.erl2
-rw-r--r--src/mod_shared_roster.erl2
-rw-r--r--src/mod_vcard.erl2
-rw-r--r--src/mod_vcard_xupdate.erl2
14 files changed, 36 insertions, 24 deletions
diff --git a/src/ejabberd_riak_sup.erl b/src/ejabberd_riak_sup.erl
index 871af5a06..bb36eb44d 100644
--- a/src/ejabberd_riak_sup.erl
+++ b/src/ejabberd_riak_sup.erl
@@ -75,7 +75,7 @@ is_riak_configured(Host) ->
fun(L) when is_list(L) -> L end, []),
ModuleWithRiakDBConfigured = lists:any(
fun({_Module, Opts}) ->
- gen_mod:db_type(Opts) == riak
+ gen_mod:db_type(Host, Opts) == riak
end, Modules),
ServerConfigured or PortConfigured
or AuthConfigured or ModuleWithRiakDBConfigured.
diff --git a/src/gen_mod.erl b/src/gen_mod.erl
index 645e3142d..e628b06ab 100644
--- a/src/gen_mod.erl
+++ b/src/gen_mod.erl
@@ -33,7 +33,7 @@
get_opt_host/3, db_type/1, db_type/2, get_module_opt/5,
get_module_opt_host/3, loaded_modules/1,
loaded_modules_with_opts/1, get_hosts/2,
- get_module_proc/2, is_loaded/2]).
+ get_module_proc/2, is_loaded/2, default_db/1]).
%%-export([behaviour_info/1]).
@@ -212,24 +212,36 @@ get_opt_host(Host, Opts, Default) ->
-spec db_type(opts()) -> odbc | mnesia | riak.
db_type(Opts) ->
- get_opt(db_type, Opts,
- fun(odbc) -> odbc;
- (internal) -> mnesia;
- (mnesia) -> mnesia;
- (riak) -> riak
- end,
- mnesia).
+ db_type(global, Opts).
--spec db_type(binary(), atom()) -> odbc | mnesia | riak.
+-spec db_type(binary() | global, atom() | opts()) -> odbc | mnesia | riak.
-db_type(Host, Module) ->
+db_type(Host, Module) when is_atom(Module) ->
get_module_opt(Host, Module, db_type,
fun(odbc) -> odbc;
(internal) -> mnesia;
(mnesia) -> mnesia;
(riak) -> riak
end,
- mnesia).
+ default_db(Host));
+db_type(Host, Opts) when is_list(Opts) ->
+ get_opt(db_type, Opts,
+ fun(odbc) -> odbc;
+ (internal) -> mnesia;
+ (mnesia) -> mnesia;
+ (riak) -> riak
+ end,
+ default_db(Host)).
+
+-spec default_db(binary() | global) -> odbc | mnesia | riak.
+
+default_db(Host) ->
+ ejabberd_config:get_option({default_db, Host},
+ fun(odbc) -> odbc;
+ (mnesia) -> mnesia;
+ (riak) -> riak;
+ (internal) -> mnesia
+ end, mnesia).
-spec loaded_modules(binary()) -> [atom()].
diff --git a/src/mod_announce.erl b/src/mod_announce.erl
index 0e7c9fa32..542417ff3 100644
--- a/src/mod_announce.erl
+++ b/src/mod_announce.erl
@@ -64,7 +64,7 @@
tokenize(Node) -> str:tokens(Node, <<"/#">>).
start(Host, Opts) ->
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(motd,
[{disc_copies, [node()]},
diff --git a/src/mod_caps.erl b/src/mod_caps.erl
index a96379e6d..36c8c0eed 100644
--- a/src/mod_caps.erl
+++ b/src/mod_caps.erl
@@ -321,7 +321,7 @@ init_db(_, _) ->
ok.
init([Host, Opts]) ->
- init_db(gen_mod:db_type(Opts), Host),
+ init_db(gen_mod:db_type(Host, Opts), Host),
MaxSize = gen_mod:get_opt(cache_size, Opts,
fun(I) when is_integer(I), I>0 -> I end,
1000),
diff --git a/src/mod_irc.erl b/src/mod_irc.erl
index 2cc57786c..e96fc4dc1 100644
--- a/src/mod_irc.erl
+++ b/src/mod_irc.erl
@@ -115,7 +115,7 @@ init([Host, Opts]) ->
ejabberd:start_app(p1_iconv),
MyHost = gen_mod:get_opt_host(Host, Opts,
<<"irc.@HOST@">>),
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(irc_custom,
[{disc_copies, [node()]},
diff --git a/src/mod_last.erl b/src/mod_last.erl
index 038378c7b..e079a2d38 100644
--- a/src/mod_last.erl
+++ b/src/mod_last.erl
@@ -48,7 +48,7 @@
start(Host, Opts) ->
IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1,
one_queue),
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(last_activity,
[{disc_copies, [node()]},
diff --git a/src/mod_muc.erl b/src/mod_muc.erl
index a0c6c34e6..a3a8a9331 100644
--- a/src/mod_muc.erl
+++ b/src/mod_muc.erl
@@ -283,7 +283,7 @@ can_use_nick(LServer, Host, JID, Nick, odbc) ->
init([Host, Opts]) ->
MyHost = gen_mod:get_opt_host(Host, Opts,
<<"conference.@HOST@">>),
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(muc_room,
[{disc_copies, [node()]},
diff --git a/src/mod_offline.erl b/src/mod_offline.erl
index ba1baaf12..7f9a81a0d 100644
--- a/src/mod_offline.erl
+++ b/src/mod_offline.erl
@@ -108,7 +108,7 @@ stop(Host) ->
%%====================================================================
init([Host, Opts]) ->
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(offline_msg,
[{disc_only_copies, [node()]}, {type, bag},
diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl
index 971be9524..fd3f60247 100644
--- a/src/mod_privacy.erl
+++ b/src/mod_privacy.erl
@@ -58,7 +58,7 @@ privacy_schema() ->
start(Host, Opts) ->
IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1,
one_queue),
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(privacy,
[{disc_copies, [node()]},
diff --git a/src/mod_private.erl b/src/mod_private.erl
index cedcb2787..f09c6100e 100644
--- a/src/mod_private.erl
+++ b/src/mod_private.erl
@@ -49,7 +49,7 @@
start(Host, Opts) ->
IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1,
one_queue),
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(private_storage,
[{disc_only_copies, [node()]},
diff --git a/src/mod_roster.erl b/src/mod_roster.erl
index e60337cda..605e8e367 100644
--- a/src/mod_roster.erl
+++ b/src/mod_roster.erl
@@ -64,7 +64,7 @@
start(Host, Opts) ->
IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1,
one_queue),
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(roster,
[{disc_copies, [node()]},
diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl
index 16800ded4..4c3f177ef 100644
--- a/src/mod_shared_roster.erl
+++ b/src/mod_shared_roster.erl
@@ -58,7 +58,7 @@
group_host = {<<"">>, <<"">>} :: {binary(), binary()}}).
start(Host, Opts) ->
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(sr_group,
[{disc_copies, [node()]},
diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl
index 7d2860ee6..ba23d0688 100644
--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -52,7 +52,7 @@
-define(PROCNAME, ejabberd_mod_vcard).
start(Host, Opts) ->
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(vcard,
[{disc_only_copies, [node()]},
diff --git a/src/mod_vcard_xupdate.erl b/src/mod_vcard_xupdate.erl
index 97d9abbb4..41a07bbc3 100644
--- a/src/mod_vcard_xupdate.erl
+++ b/src/mod_vcard_xupdate.erl
@@ -28,7 +28,7 @@
%%====================================================================
start(Host, Opts) ->
- case gen_mod:db_type(Opts) of
+ case gen_mod:db_type(Host, Opts) of
mnesia ->
mnesia:create_table(vcard_xupdate,
[{disc_copies, [node()]},