./ct_report/coverage/mongoose_wpool_rdbms.COVER.html

1 -module(mongoose_wpool_rdbms).
2 -behaviour(mongoose_wpool).
3
4 -export([init/0]).
5 -export([start/4]).
6 -export([stop/2]).
7
8 %% --------------------------------------------------------------
9 %% mongoose_wpool callbacks
10 init() ->
11
:-(
case ets:info(prepared_statements) of
12 undefined ->
13
:-(
Heir = case whereis(ejabberd_sup) of
14
:-(
undefined -> [];
15
:-(
Pid -> [{heir, Pid, undefined}]
16 end,
17
:-(
ets:new(prepared_statements,
18 [named_table, public, {read_concurrency, true} | Heir]),
19
:-(
ok;
20 _ ->
21
:-(
ok
22 end.
23
24 start(HostType, Tag, WpoolOpts, RdbmsOpts) ->
25
:-(
try do_start(HostType, Tag, WpoolOpts, RdbmsOpts)
26 catch
27
:-(
Err -> {error, Err}
28 end.
29
30 stop(_, _) ->
31
:-(
ok.
32
33 %% --------------------------------------------------------------
34 %% Helper functions
35 do_start(HostType, Tag, WpoolOpts0, RdbmsOpts) when is_list(WpoolOpts0) and is_map(RdbmsOpts) ->
36
:-(
BackendName = backend_name(RdbmsOpts),
37
:-(
KVRdbmsOpts = maps:to_list(RdbmsOpts),
38
:-(
BackendOpts = KVRdbmsOpts ++ [{backend, BackendName}],
39
:-(
mongoose_backend:init(global, mongoose_rdbms, [query, execute], BackendOpts),
40
41
:-(
mongoose_metrics:ensure_db_pool_metric({rdbms, HostType, Tag}),
42
:-(
WpoolOpts = make_wpool_opts(WpoolOpts0, KVRdbmsOpts),
43
:-(
ProcName = mongoose_wpool:make_pool_name(rdbms, HostType, Tag),
44
:-(
mongoose_wpool:start_sup_pool(rdbms, ProcName, WpoolOpts).
45
46 make_wpool_opts(WpoolOpts0, RdbmsOpts) ->
47
:-(
Worker = {mongoose_rdbms, RdbmsOpts},
48
:-(
[{worker, Worker}, {pool_sup_shutdown, infinity} | WpoolOpts0].
49
50 -spec backend_name(map()) -> odbc | pgsql | mysql.
51 backend_name(RdbmsOpts) ->
52
:-(
case maps:get(server, RdbmsOpts) of
53
:-(
ConnStr when is_list(ConnStr) -> odbc;
54
:-(
Tuple when is_tuple(Tuple) -> element(1, Tuple)
55 end.
Line Hits Source