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..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 @@ -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,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, format => <<"sql">>} + )}, {connector, mk( ref(?MODULE, connector), @@ -85,8 +90,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 +108,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} - })} - ].