]> granicus.if.org Git - ejabberd/commitdiff
Add new 'default_db' option
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Mon, 30 Mar 2015 09:15:29 +0000 (12:15 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Mon, 30 Mar 2015 09:15:29 +0000 (12:15 +0300)
14 files changed:
src/ejabberd_riak_sup.erl
src/gen_mod.erl
src/mod_announce.erl
src/mod_caps.erl
src/mod_irc.erl
src/mod_last.erl
src/mod_muc.erl
src/mod_offline.erl
src/mod_privacy.erl
src/mod_private.erl
src/mod_roster.erl
src/mod_shared_roster.erl
src/mod_vcard.erl
src/mod_vcard_xupdate.erl

index 871af5a06f78161403726aba3152231394a7293d..bb36eb44d1ef46334375c4bb62f320ace0d73c4a 100644 (file)
@@ -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.
index 645e3142d1fa9b9f0c79ec8d14f3f1b9fa0dbc81..e628b06abc8f8c843d7c0cd4d9cb298090b2bda0 100644 (file)
@@ -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()].
 
index 0e7c9fa32b88c82b6b148b4b1d90847c381d7d08..542417ff378d73027d6cf389cf03be87a9024ce3 100644 (file)
@@ -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()]},
index a96379e6dc9bb4ea81c2125eb0b08e846d06dfb8..36c8c0eedddbb42211a871c758ece8a3779b330d 100644 (file)
@@ -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),
index 2cc57786c48598615cab8fe4573147dd30ae372e..e96fc4dc1391aed62bfd681974db7f64d91aaa2f 100644 (file)
@@ -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()]},
index 038378c7b1f0fcb6bc766a42b65a1dce2c227978..e079a2d38591143ab0ed0d3c3f2bbe54b81f553c 100644 (file)
@@ -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()]},
index a0c6c34e639eb9cf38868f1da4c3b60a9c7620d2..a3a8a933178e4212d01554e968b9ddc2ed63f961 100644 (file)
@@ -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()]},
index ba1baaf124f2f354dfd9fc56a03873e3979fd8b5..7f9a81a0daf1a3a5a91b8beecf6bd60087db90fc 100644 (file)
@@ -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},
index 971be9524076d769240ca7586085580a079543c1..fd3f60247c5297d618cc14f629416c4a30d74a81 100644 (file)
@@ -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()]},
index cedcb2787ddb081c3f475eaa698ace22809b50ff..f09c6100edeb3a4a0419f89ec0bba1bec1beee2f 100644 (file)
@@ -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()]},
index e60337cda45d5d79c7987319eb9b55bd5602fd02..605e8e36702bb170b701ff38fe40d73fe4a47434 100644 (file)
@@ -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()]},
index 16800ded4ee446b7c6780c77aba9019364fbd1d3..4c3f177efa4f848d48f5228d8ff20ff3bab25806 100644 (file)
@@ -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()]},
index 7d2860ee68fad67faf02e67be185185b9c043d64..ba23d0688321b80046a61fa46bdbee77ed7d704b 100644 (file)
@@ -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()]},
index 97d9abbb46fc81f3b92d76042bfcd4399bbd40fb..41a07bbc3dbe7ed172a9fe2161c27e8cdaf7b562 100644 (file)
@@ -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()]},