From 7581082fcbd86b6090cc93a2b9345b6bcb52cd30 Mon Sep 17 00:00:00 2001 From: firest Date: Thu, 11 Aug 2022 13:22:16 +0800 Subject: [PATCH 1/2] fix(bridge): replace prepare_statement by sql_template --- .../src/emqx_connector_mysql.erl | 16 ++++++++++++++-- .../i18n/emqx_ee_bridge_mysql.conf | 2 +- .../src/emqx_ee_bridge_mysql.erl | 18 ++++-------------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/apps/emqx_connector/src/emqx_connector_mysql.erl b/apps/emqx_connector/src/emqx_connector_mysql.erl index b379e511c..cae07433a 100644 --- a/apps/emqx_connector/src/emqx_connector_mysql.erl +++ b/apps/emqx_connector/src/emqx_connector_mysql.erl @@ -111,7 +111,7 @@ on_start( {pool_size, PoolSize} ], PoolName = emqx_plugin_libs_pool:pool_name(InstId), - Prepares = parse_prepare_sql(maps:get(prepare_statement, Config, #{})), + Prepares = parse_prepare_sql(Config), State = maps:merge(#{poolname => PoolName, auto_reconnect => AutoReconn}, Prepares), case emqx_plugin_libs_pool:start_pool(PoolName, ?MODULE, Options ++ SslOpts) of ok -> {ok, init_prepare(State)}; @@ -303,7 +303,19 @@ prepare_sql_to_conn(Conn, [{Key, SQL} | PrepareList]) when is_pid(Conn) -> unprepare_sql_to_conn(Conn, PrepareSqlKey) -> mysql:unprepare(Conn, PrepareSqlKey). -parse_prepare_sql(SQL) -> +parse_prepare_sql(Config) -> + SQL = + case maps:get(prepare_statement, Config, undefined) of + undefined -> + case emqx_map_lib:deep_get([egress, sql_template], Config, undefined) of + undefined -> + #{}; + Template -> + #{send_message => Template} + end; + Any -> + Any + end, parse_prepare_sql(maps:to_list(SQL), #{}, #{}). parse_prepare_sql([{Key, H} | T], SQL, Tokens) -> diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mysql.conf b/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mysql.conf index 9e3796487..48fbd1007 100644 --- a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mysql.conf +++ b/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mysql.conf @@ -1,5 +1,5 @@ emqx_ee_bridge_mysql { - sql { + sql_template { desc { en: """SQL Template""" zh: """SQL 模板""" diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl index bf38da2f8..ebcbc0e64 100644 --- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl +++ b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl @@ -44,14 +44,14 @@ values(post) -> #{ type => mysql, name => <<"mysql">>, + sql_template => ?DEFAULT_SQL, connector => #{ server => <<"127.0.0.1:3306">>, database => <<"test">>, pool_size => 8, username => <<"root">>, password => <<"public">>, - auto_reconnect => true, - prepare_statement => #{send_message => ?DEFAULT_SQL} + auto_reconnect => true }, enable => true, direction => egress @@ -69,6 +69,7 @@ fields("config") -> [ {enable, mk(boolean(), #{desc => ?DESC("config_enable"), default => true})}, {direction, mk(egress, #{desc => ?DESC("config_direction"), default => egress})}, + {sql_template, mk(binary(), #{desc => ?DESC("sql_template"), default => ?DEFAULT_SQL})}, {connector, mk( ref(?MODULE, connector), @@ -85,8 +86,7 @@ fields("put") -> fields("get") -> emqx_bridge_schema:metrics_status_fields() ++ fields("post"); fields(connector) -> - (emqx_connector_mysql:fields(config) -- - emqx_connector_schema_lib:prepare_statement_fields()) ++ prepare_statement_fields(). + emqx_connector_mysql:fields(config) -- emqx_connector_schema_lib:prepare_statement_fields(). desc("config") -> ?DESC("desc_config"); @@ -104,13 +104,3 @@ type_field() -> name_field() -> {name, mk(binary(), #{required => true, desc => ?DESC("desc_name")})}. - -prepare_statement_fields() -> - [ - {prepare_statement, - mk(map(), #{ - desc => ?DESC(emqx_connector_schema_lib, prepare_statement), - default => #{<<"send_message">> => ?DEFAULT_SQL}, - example => #{<<"send_message">> => ?DEFAULT_SQL} - })} - ]. From dc804993999de0b46175d00e59b3521c016f45e5 Mon Sep 17 00:00:00 2001 From: firest Date: Thu, 11 Aug 2022 15:58:48 +0800 Subject: [PATCH 2/2] fix(bridge): add sql_template field format --- lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl index ebcbc0e64..5d143bf85 100644 --- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl +++ b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mysql.erl @@ -69,7 +69,11 @@ fields("config") -> [ {enable, mk(boolean(), #{desc => ?DESC("config_enable"), default => true})}, {direction, mk(egress, #{desc => ?DESC("config_direction"), default => egress})}, - {sql_template, mk(binary(), #{desc => ?DESC("sql_template"), default => ?DEFAULT_SQL})}, + {sql_template, + mk( + binary(), + #{desc => ?DESC("sql_template"), default => ?DEFAULT_SQL, format => <<"sql">>} + )}, {connector, mk( ref(?MODULE, connector),