aboutsummaryrefslogtreecommitdiff
path: root/src/gen_mod.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-04-13 09:56:10 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-04-13 09:56:10 +0300
commit5eef8a8bcf44101cb83e95af21f5f082eb4b7c6b (patch)
tree3090d4f9c5192c41b21ee553a06100f9caced693 /src/gen_mod.erl
parentFix typo in error message (diff)
Make it possible to get DB backend of a module
Diffstat (limited to 'src/gen_mod.erl')
-rw-r--r--src/gen_mod.erl15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gen_mod.erl b/src/gen_mod.erl
index 1044d0953..a290aa20a 100644
--- a/src/gen_mod.erl
+++ b/src/gen_mod.erl
@@ -36,7 +36,7 @@
loaded_modules/1, loaded_modules_with_opts/1,
get_hosts/2, get_module_proc/2, is_loaded/2,
start_modules/0, start_modules/1, stop_modules/0, stop_modules/1,
- default_db/1, v_db/1, opt_type/1]).
+ default_db/1, v_db/1, opt_type/1, db_mod/2, db_mod/3]).
%%-export([behaviour_info/1]).
@@ -319,6 +319,19 @@ db_type(Host, Opts) when is_list(Opts) ->
default_db(Host) ->
ejabberd_config:get_option({default_db, Host}, fun v_db/1, mnesia).
+-spec db_mod(binary() | global | db_type(), module()) -> module().
+
+db_mod(odbc, Module) -> list_to_atom(atom_to_list(Module) ++ "_sql");
+db_mod(mnesia, Module) -> list_to_atom(atom_to_list(Module) ++ "_mnesia");
+db_mod(riak, Module) -> list_to_atom(atom_to_list(Module) ++ "_riak");
+db_mod(Host, Module) when is_binary(Host) orelse Host == global ->
+ db_mod(db_type(Host, Module), Module).
+
+-spec db_mod(binary() | global, opts(), module()) -> module().
+
+db_mod(Host, Opts, Module) when is_list(Opts) ->
+ db_mod(db_type(Host, Opts), Module).
+
-spec loaded_modules(binary()) -> [atom()].
loaded_modules(Host) ->