diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-04-13 09:56:10 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-04-13 09:56:10 +0300 |
commit | 5eef8a8bcf44101cb83e95af21f5f082eb4b7c6b (patch) | |
tree | 3090d4f9c5192c41b21ee553a06100f9caced693 /src | |
parent | Fix typo in error message (diff) |
Make it possible to get DB backend of a module
Diffstat (limited to 'src')
-rw-r--r-- | src/gen_mod.erl | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gen_mod.erl b/src/gen_mod.erl index 1044d095..a290aa20 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) -> |