fix mysql
This commit is contained in:
parent
14df94975e
commit
4eefb7fc9f
@ -19,7 +19,7 @@ get_all_hosts() ->
|
|||||||
case mysql_pool:get_all(mysql_iot, <<"SELECT uuid FROM host where uuid != ''">>) of
|
case mysql_pool:get_all(mysql_iot, <<"SELECT uuid FROM host where uuid != ''">>) of
|
||||||
{ok, Hosts} ->
|
{ok, Hosts} ->
|
||||||
lists:map(fun(#{<<"uuid">> := UUID}) -> UUID end, Hosts);
|
lists:map(fun(#{<<"uuid">> := UUID}) -> UUID end, Hosts);
|
||||||
{error, _Reason} ->
|
{error, _} ->
|
||||||
[]
|
[]
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|||||||
@ -30,10 +30,12 @@ get_all(Pool, Sql) when is_atom(Pool), is_binary(Sql) ->
|
|||||||
get_all(Pool, Sql, Params) when is_atom(Pool), is_binary(Sql), is_list(Params) ->
|
get_all(Pool, Sql, Params) when is_atom(Pool), is_binary(Sql), is_list(Params) ->
|
||||||
poolboy:transaction(Pool, fun(ConnPid) -> mysql_provider:get_all(ConnPid, Sql, Params) end).
|
poolboy:transaction(Pool, fun(ConnPid) -> mysql_provider:get_all(ConnPid, Sql, Params) end).
|
||||||
|
|
||||||
-spec insert(Pool :: atom(), Table :: binary(), Fields :: map() | list(), boolean()) -> ok | {ok, InsertId :: integer()} | {error, Reason :: any()}.
|
-spec insert(Pool :: atom(), Table :: binary(), Fields :: map() | list(), boolean()) ->
|
||||||
|
ok | {ok, InsertId :: integer()} | {error, Reason :: any()}.
|
||||||
insert(Pool, Table, Fields, FetchInsertId) when is_atom(Pool), is_binary(Table), is_list(Fields); is_map(Fields), is_boolean(FetchInsertId) ->
|
insert(Pool, Table, Fields, FetchInsertId) when is_atom(Pool), is_binary(Table), is_list(Fields); is_map(Fields), is_boolean(FetchInsertId) ->
|
||||||
poolboy:transaction(Pool, fun(ConnPid) -> mysql_provider:insert(ConnPid, Table, Fields, FetchInsertId) end).
|
poolboy:transaction(Pool, fun(ConnPid) -> mysql_provider:insert(ConnPid, Table, Fields, FetchInsertId) end).
|
||||||
|
|
||||||
|
-spec update_by(Pool :: atom(), UpdateSql :: binary()) -> {ok, AffectedRows :: integer()} | {error, Reason :: any()}.
|
||||||
update_by(Pool, UpdateSql) when is_atom(Pool), is_binary(UpdateSql) ->
|
update_by(Pool, UpdateSql) when is_atom(Pool), is_binary(UpdateSql) ->
|
||||||
poolboy:transaction(Pool, fun(ConnPid) -> mysql_provider:update_by(ConnPid, UpdateSql) end).
|
poolboy:transaction(Pool, fun(ConnPid) -> mysql_provider:update_by(ConnPid, UpdateSql) end).
|
||||||
|
|
||||||
|
|||||||
@ -9,8 +9,6 @@
|
|||||||
-module(mysql_provider).
|
-module(mysql_provider).
|
||||||
-author("aresei").
|
-author("aresei").
|
||||||
|
|
||||||
-define(POOL_NAME, mysql_pool).
|
|
||||||
|
|
||||||
%% API
|
%% API
|
||||||
-export([get_row/2, get_row/3, get_all/2, get_all/3]).
|
-export([get_row/2, get_row/3, get_all/2, get_all/3]).
|
||||||
-export([update/4, update_by/2, update_by/3, insert/4]).
|
-export([update/4, update_by/2, update_by/3, insert/4]).
|
||||||
@ -18,7 +16,7 @@
|
|||||||
%% 从数据库中查找一行记录
|
%% 从数据库中查找一行记录
|
||||||
-spec get_row(ConnPid :: pid(), Sql::binary()) -> {ok, Record::map()} | undefined.
|
-spec get_row(ConnPid :: pid(), Sql::binary()) -> {ok, Record::map()} | undefined.
|
||||||
get_row(ConnPid, Sql) when is_pid(ConnPid), is_binary(Sql) ->
|
get_row(ConnPid, Sql) when is_pid(ConnPid), is_binary(Sql) ->
|
||||||
lager:debug("[mysql_client] the get_row sql is: ~p", [Sql]),
|
lager:debug("[mysql_client] get_row sql is: ~p", [Sql]),
|
||||||
case mysql:query(ConnPid, Sql) of
|
case mysql:query(ConnPid, Sql) of
|
||||||
{ok, Names, [Row | _]} ->
|
{ok, Names, [Row | _]} ->
|
||||||
{ok, maps:from_list(lists:zip(Names, Row))};
|
{ok, maps:from_list(lists:zip(Names, Row))};
|
||||||
@ -31,7 +29,7 @@ get_row(ConnPid, Sql) when is_pid(ConnPid), is_binary(Sql) ->
|
|||||||
|
|
||||||
-spec get_row(ConnPid :: pid(), Sql::binary(), Params::list()) -> {ok, Record::map()} | undefined.
|
-spec get_row(ConnPid :: pid(), Sql::binary(), Params::list()) -> {ok, Record::map()} | undefined.
|
||||||
get_row(ConnPid, Sql, Params) when is_pid(ConnPid), is_binary(Sql), is_list(Params) ->
|
get_row(ConnPid, Sql, Params) when is_pid(ConnPid), is_binary(Sql), is_list(Params) ->
|
||||||
lager:debug("[mysql_client] the get_row sql is: ~p, params: ~p", [Sql, Params]),
|
lager:debug("[mysql_client] get_row sql is: ~p, params: ~p", [Sql, Params]),
|
||||||
case mysql:query(ConnPid, Sql, Params) of
|
case mysql:query(ConnPid, Sql, Params) of
|
||||||
{ok, Names, [Row | _]} ->
|
{ok, Names, [Row | _]} ->
|
||||||
{ok, maps:from_list(lists:zip(Names, Row))};
|
{ok, maps:from_list(lists:zip(Names, Row))};
|
||||||
@ -44,27 +42,28 @@ get_row(ConnPid, Sql, Params) when is_pid(ConnPid), is_binary(Sql), is_list(Para
|
|||||||
|
|
||||||
-spec get_all(ConnPid :: pid(), Sql::binary()) -> {ok, Rows::list()} | {error, Reason :: any()}.
|
-spec get_all(ConnPid :: pid(), Sql::binary()) -> {ok, Rows::list()} | {error, Reason :: any()}.
|
||||||
get_all(ConnPid, Sql) when is_pid(ConnPid), is_binary(Sql) ->
|
get_all(ConnPid, Sql) when is_pid(ConnPid), is_binary(Sql) ->
|
||||||
lager:debug("[mysql_client] the get_all sql is: ~p", [Sql]),
|
lager:debug("[mysql_client] get_all sql is: ~p", [Sql]),
|
||||||
case mysql:query(ConnPid, Sql) of
|
case mysql:query(ConnPid, Sql) of
|
||||||
{ok, Names, Rows} ->
|
{ok, Names, Rows} ->
|
||||||
{ok, lists:map(fun(Row) -> maps:from_list(lists:zip(Names, Row)) end, Rows)};
|
{ok, lists:map(fun(Row) -> maps:from_list(lists:zip(Names, Row)) end, Rows)};
|
||||||
Error ->
|
{error, Reason} ->
|
||||||
lager:warning("[mysql_client] get error: ~p", [Error]),
|
lager:warning("[mysql_client] get error: ~p", [Reason]),
|
||||||
Error
|
{error, Reason}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec get_all(ConnPid :: pid(), Sql::binary(), Params::list()) -> {ok, Rows::list()} | {error, Reason::any()}.
|
-spec get_all(ConnPid :: pid(), Sql::binary(), Params::list()) -> {ok, Rows::list()} | {error, Reason::any()}.
|
||||||
get_all(ConnPid, Sql, Params) when is_pid(ConnPid), is_binary(Sql), is_list(Params) ->
|
get_all(ConnPid, Sql, Params) when is_pid(ConnPid), is_binary(Sql), is_list(Params) ->
|
||||||
lager:debug("[mysql_client] the get_all sql is: ~p, params: ~p", [Sql, Params]),
|
lager:debug("[mysql_client] get_all sql is: ~p, params: ~p", [Sql, Params]),
|
||||||
case mysql:query(ConnPid, Sql, Params) of
|
case mysql:query(ConnPid, Sql, Params) of
|
||||||
{ok, Names, Rows} ->
|
{ok, Names, Rows} ->
|
||||||
{ok, lists:map(fun(Row) -> maps:from_list(lists:zip(Names, Row)) end, Rows)};
|
{ok, lists:map(fun(Row) -> maps:from_list(lists:zip(Names, Row)) end, Rows)};
|
||||||
Error ->
|
{error, Reason} ->
|
||||||
lager:warning("[mysql_client] get error: ~p", [Error]),
|
lager:warning("[mysql_client] get error: ~p", [Reason]),
|
||||||
{ok, []}
|
{error, Reason}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec insert(ConnPid :: pid(), Table :: binary(), Fields :: map() | list(), boolean()) -> ok | {ok, InsertId :: integer()} | {error, Reason :: any()}.
|
-spec insert(ConnPid :: pid(), Table :: binary(), Fields :: map() | list(), boolean()) ->
|
||||||
|
ok | {ok, InsertId :: integer()} | {error, Reason :: any()}.
|
||||||
insert(ConnPid, Table, Fields, FetchInsertId) when is_pid(ConnPid), is_binary(Table), is_map(Fields), is_boolean(FetchInsertId) ->
|
insert(ConnPid, Table, Fields, FetchInsertId) when is_pid(ConnPid), is_binary(Table), is_map(Fields), is_boolean(FetchInsertId) ->
|
||||||
insert(ConnPid, Table, maps:to_list(Fields), FetchInsertId);
|
insert(ConnPid, Table, maps:to_list(Fields), FetchInsertId);
|
||||||
insert(ConnPid, Table, Fields, FetchInsertId) when is_pid(ConnPid), is_binary(Table), is_list(Fields), is_boolean(FetchInsertId) ->
|
insert(ConnPid, Table, Fields, FetchInsertId) when is_pid(ConnPid), is_binary(Table), is_list(Fields), is_boolean(FetchInsertId) ->
|
||||||
@ -75,7 +74,7 @@ insert(ConnPid, Table, Fields, FetchInsertId) when is_pid(ConnPid), is_binary(Ta
|
|||||||
ValuesPlaceholder = iolist_to_binary(lists:join(<<", ">>, Placeholders)),
|
ValuesPlaceholder = iolist_to_binary(lists:join(<<", ">>, Placeholders)),
|
||||||
|
|
||||||
Sql = <<"INSERT INTO ", Table/binary, "(", FieldSql/binary, ") VALUES(", ValuesPlaceholder/binary, ")">>,
|
Sql = <<"INSERT INTO ", Table/binary, "(", FieldSql/binary, ") VALUES(", ValuesPlaceholder/binary, ")">>,
|
||||||
lager:debug("[mysql_client] the insert sql is: ~p, params: ~p", [Sql, Values]),
|
lager:debug("[mysql_client] insert sql is: ~p, params: ~p", [Sql, Values]),
|
||||||
case mysql:query(ConnPid, Sql, Values) of
|
case mysql:query(ConnPid, Sql, Values) of
|
||||||
ok ->
|
ok ->
|
||||||
case FetchInsertId of
|
case FetchInsertId of
|
||||||
@ -89,6 +88,7 @@ insert(ConnPid, Table, Fields, FetchInsertId) when is_pid(ConnPid), is_binary(Ta
|
|||||||
Error
|
Error
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
-spec update_by(ConnPid :: pid(), UpdateSql :: binary()) -> {ok, AffectedRows :: integer()} | {error, Reason :: any()}.
|
||||||
update_by(ConnPid, UpdateSql) when is_pid(ConnPid), is_binary(UpdateSql) ->
|
update_by(ConnPid, UpdateSql) when is_pid(ConnPid), is_binary(UpdateSql) ->
|
||||||
lager:debug("[mysql_client] updateBySql sql: ~p", [UpdateSql]),
|
lager:debug("[mysql_client] updateBySql sql: ~p", [UpdateSql]),
|
||||||
case mysql:query(ConnPid, UpdateSql) of
|
case mysql:query(ConnPid, UpdateSql) of
|
||||||
@ -110,7 +110,8 @@ update_by(ConnPid, UpdateSql, Params) when is_pid(ConnPid), is_binary(UpdateSql)
|
|||||||
Error
|
Error
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec update(ConnPid :: pid(), Sql :: binary(), Fields :: map(), WhereFields :: map()) -> {ok, AffectedRows::integer()} | {error, Reason::any()}.
|
-spec update(ConnPid :: pid(), Sql :: binary(), Fields :: map(), WhereFields :: map()) ->
|
||||||
|
{ok, AffectedRows::integer()} | {error, Reason::any()}.
|
||||||
update(ConnPid, Table, Fields, WhereFields) when is_pid(ConnPid), is_binary(Table), is_map(Fields), is_map(WhereFields) ->
|
update(ConnPid, Table, Fields, WhereFields) when is_pid(ConnPid), is_binary(Table), is_map(Fields), is_map(WhereFields) ->
|
||||||
%% 拼接set
|
%% 拼接set
|
||||||
{SetKeys, SetVals} = kvs(Fields),
|
{SetKeys, SetVals} = kvs(Fields),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user