diff --git a/src/emysql.erl b/src/emysql.erl index a373de9a..502b1531 100644 --- a/src/emysql.erl +++ b/src/emysql.erl @@ -270,32 +270,15 @@ add_pool(PoolId, Options) when is_list(Options) -> encoding=Encoding, start_cmds=StartCmds, connect_timeout=ConnectTimeout, warnings=Warnings}). -add_pool(#pool{pool_id=PoolId,size=Size,user=User,password=Password,host=Host,port=Port, - database=Database,encoding=Encoding,start_cmds=StartCmds, - connect_timeout=ConnectTimeout,warnings=Warnings}=PoolSettings)-> +add_pool(PoolSettings) when is_record(PoolSettings, pool) -> config_ok(PoolSettings), - case emysql_conn_mgr:has_pool(PoolId) of - true -> - {error,pool_already_exists}; - false -> - Pool = #pool{ - pool_id = PoolId, - size = Size, - user = User, - password = Password, - host = Host, - port = Port, - database = Database, - encoding = Encoding, - start_cmds = StartCmds, - connect_timeout = ConnectTimeout, - warnings = Warnings - }, - Pool2 = case emysql_conn:open_connections(Pool) of - {ok, Pool1} -> Pool1; - {error, Reason} -> throw(Reason) - end, - emysql_conn_mgr:add_pool(Pool2) + case emysql_conn_mgr:add_pool(PoolSettings) of + {ok, _NewPool} -> + ok; + {error, pool_already_exists} -> + {error, pool_already_exists}; + {_Error, Reason} -> + throw(Reason) end. %% @spec add_pool(PoolId, Size, User, Password, Host, Port, Database, Encoding) -> Result diff --git a/src/emysql_conn_mgr.erl b/src/emysql_conn_mgr.erl index b14a08d6..ab2781c3 100644 --- a/src/emysql_conn_mgr.erl +++ b/src/emysql_conn_mgr.erl @@ -173,7 +173,12 @@ handle_call({add_pool, Pool}, _From, State) -> {_, _} -> {reply, {error, pool_already_exists}, State}; undefined -> - {reply, ok, State#state{pools = [Pool|State#state.pools]}} + case catch emysql_conn:open_connections(Pool) of + {ok, NewPool} -> + {reply, {ok, NewPool}, State#state{pools = [NewPool|State#state.pools]}}; + {Error, Reason} -> + {reply, {Error, Reason}, State} + end end; handle_call({remove_pool, PoolId}, _From, State) ->