From 4eefb7fc9fa845399d07c64d3b0016e1c81dd6b6 Mon Sep 17 00:00:00 2001 From: anlicheng Date: Thu, 10 Aug 2023 14:51:01 +0800 Subject: [PATCH] fix mysql --- apps/iot/src/database/host_bo.erl | 2 +- apps/iot/src/mysql/mysql_pool.erl | 4 +++- apps/iot/src/mysql/mysql_provider.erl | 31 ++++++++++++++------------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/apps/iot/src/database/host_bo.erl b/apps/iot/src/database/host_bo.erl index b452536..81f1e98 100644 --- a/apps/iot/src/database/host_bo.erl +++ b/apps/iot/src/database/host_bo.erl @@ -19,7 +19,7 @@ get_all_hosts() -> case mysql_pool:get_all(mysql_iot, <<"SELECT uuid FROM host where uuid != ''">>) of {ok, Hosts} -> lists:map(fun(#{<<"uuid">> := UUID}) -> UUID end, Hosts); - {error, _Reason} -> + {error, _} -> [] end. diff --git a/apps/iot/src/mysql/mysql_pool.erl b/apps/iot/src/mysql/mysql_pool.erl index c141513..cbceac5 100644 --- a/apps/iot/src/mysql/mysql_pool.erl +++ b/apps/iot/src/mysql/mysql_pool.erl @@ -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) -> 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) -> 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) -> poolboy:transaction(Pool, fun(ConnPid) -> mysql_provider:update_by(ConnPid, UpdateSql) end). diff --git a/apps/iot/src/mysql/mysql_provider.erl b/apps/iot/src/mysql/mysql_provider.erl index 3e7823c..7415f9d 100644 --- a/apps/iot/src/mysql/mysql_provider.erl +++ b/apps/iot/src/mysql/mysql_provider.erl @@ -9,8 +9,6 @@ -module(mysql_provider). -author("aresei"). --define(POOL_NAME, mysql_pool). - %% API -export([get_row/2, get_row/3, get_all/2, get_all/3]). -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. 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 {ok, 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. 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 {ok, 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()}. 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 {ok, Names, Rows} -> {ok, lists:map(fun(Row) -> maps:from_list(lists:zip(Names, Row)) end, Rows)}; - Error -> - lager:warning("[mysql_client] get error: ~p", [Error]), - Error + {error, Reason} -> + lager:warning("[mysql_client] get error: ~p", [Reason]), + {error, Reason} end. -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) -> - 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 {ok, Names, Rows} -> {ok, lists:map(fun(Row) -> maps:from_list(lists:zip(Names, Row)) end, Rows)}; - Error -> - lager:warning("[mysql_client] get error: ~p", [Error]), - {ok, []} + {error, Reason} -> + lager:warning("[mysql_client] get error: ~p", [Reason]), + {error, Reason} 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, maps:to_list(Fields), 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)), 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 ok -> case FetchInsertId of @@ -89,6 +88,7 @@ insert(ConnPid, Table, Fields, FetchInsertId) when is_pid(ConnPid), is_binary(Ta Error 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) -> lager:debug("[mysql_client] updateBySql sql: ~p", [UpdateSql]), case mysql:query(ConnPid, UpdateSql) of @@ -110,7 +110,8 @@ update_by(ConnPid, UpdateSql, Params) when is_pid(ConnPid), is_binary(UpdateSql) Error 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) -> %% 拼接set {SetKeys, SetVals} = kvs(Fields),