diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-01-11 16:25:43 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-01-11 16:25:43 +0300 |
commit | 02f96d0f41e86b531622cda15cfcf8d52040bd7b (patch) | |
tree | 783f54bbe269faaeb9aff5badd868b46b8ca0376 /src/ejabberd_config.erl | |
parent | Fix attaching ejabberd_s2s_out process to a supervisor (diff) |
Implement database backend interface for ejabberd_router
Diffstat (limited to 'src/ejabberd_config.erl')
-rw-r--r-- | src/ejabberd_config.erl | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index 9014bfab..f9df31bf 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -35,10 +35,11 @@ get_version/0, get_myhosts/0, get_mylang/0, get_ejabberd_config_path/0, is_using_elixir_config/0, prepare_opt_val/4, convert_table_to_binary/5, - transform_options/1, collect_options/1, default_db/2, + transform_options/1, collect_options/1, convert_to_yaml/1, convert_to_yaml/2, v_db/2, env_binary_to_list/2, opt_type/1, may_hide_data/1, is_elixir_enabled/0, v_dbs/1, v_dbs_mods/1, + default_db/1, default_db/2, default_ram_db/1, default_ram_db/2, fsm_limit_opts/1]). -export([start/2]). @@ -857,8 +858,8 @@ get_option(Opt, F, Default) -> case Opt of {Key, Host} when Host /= global -> get_option({Key, global}, F, Default); - _ -> - Default + _ -> + Default end end. @@ -907,11 +908,26 @@ v_dbs_mods(Mod) -> (atom_to_binary(M, utf8))/binary>>, utf8) end, ets:match(module_db, {Mod, '$1'})). --spec default_db(binary(), module()) -> atom(). +-spec default_db(module()) -> atom(). +default_db(Module) -> + default_db(global, Module). +-spec default_db(binary(), module()) -> atom(). default_db(Host, Module) -> + default_db(default_db, Host, Module). + +-spec default_ram_db(module()) -> atom(). +default_ram_db(Module) -> + default_ram_db(global, Module). + +-spec default_ram_db(binary(), module()) -> atom(). +default_ram_db(Host, Module) -> + default_db(default_ram_db, Host, Module). + +-spec default_db(default_db | default_ram_db, binary(), module()) -> atom(). +default_db(Opt, Host, Module) -> case ejabberd_config:get_option( - {default_db, Host}, fun(T) when is_atom(T) -> T end) of + {Opt, Host}, fun(T) when is_atom(T) -> T end) of undefined -> mnesia; DBType -> @@ -919,8 +935,8 @@ default_db(Host, Module) -> v_db(Module, DBType) catch error:badarg -> ?WARNING_MSG("Module '~s' doesn't support database '~s' " - "defined in option 'default_db', using " - "'mnesia' as fallback", [Module, DBType]), + "defined in option '~s', using " + "'mnesia' as fallback", [Module, DBType, Opt]), mnesia end end. @@ -1406,8 +1422,13 @@ opt_type(language) -> fun iolist_to_binary/1; opt_type(max_fsm_queue) -> fun (I) when is_integer(I), I > 0 -> I end; +opt_type(default_db) -> + fun(T) when is_atom(T) -> T end; +opt_type(default_ram_db) -> + fun(T) when is_atom(T) -> T end; opt_type(_) -> - [hide_sensitive_log_data, hosts, language]. + [hide_sensitive_log_data, hosts, language, + default_db, default_ram_db]. -spec may_hide_data(string()) -> string(); (binary()) -> binary(). |