|
|
@@ -6,17 +6,67 @@
|
|
|
|
|
|
-behaviour(emqx_action_info).
|
|
|
|
|
|
+-elvis([{elvis_style, invalid_dynamic_call, disable}]).
|
|
|
+
|
|
|
-export([
|
|
|
bridge_v1_type_name/0,
|
|
|
action_type_name/0,
|
|
|
connector_type_name/0,
|
|
|
- schema_module/0
|
|
|
+ schema_module/0,
|
|
|
+ bridge_v1_config_to_action_config/2,
|
|
|
+ bridge_v1_config_to_connector_config/1,
|
|
|
+ connector_action_config_to_bridge_v1_config/2
|
|
|
]).
|
|
|
|
|
|
-bridge_v1_type_name() -> sqlserver.
|
|
|
+-import(emqx_utils_conv, [bin/1]).
|
|
|
+
|
|
|
+-define(ACTION_TYPE, sqlserver).
|
|
|
+-define(SCHEMA_MODULE, emqx_bridge_sqlserver).
|
|
|
+
|
|
|
+bridge_v1_type_name() -> ?ACTION_TYPE.
|
|
|
+
|
|
|
+action_type_name() -> ?ACTION_TYPE.
|
|
|
+
|
|
|
+connector_type_name() -> ?ACTION_TYPE.
|
|
|
+
|
|
|
+schema_module() -> ?SCHEMA_MODULE.
|
|
|
+
|
|
|
+bridge_v1_config_to_action_config(BridgeV1Config, ConnectorName) ->
|
|
|
+ ActionTopLevelKeys = schema_keys(sqlserver_action),
|
|
|
+ ActionParametersKeys = schema_keys(action_parameters),
|
|
|
+ ActionKeys = ActionTopLevelKeys ++ ActionParametersKeys,
|
|
|
+ ActionConfig = make_config_map(ActionKeys, ActionParametersKeys, BridgeV1Config),
|
|
|
+ emqx_utils_maps:update_if_present(
|
|
|
+ <<"resource_opts">>,
|
|
|
+ fun emqx_bridge_v2_schema:project_to_actions_resource_opts/1,
|
|
|
+ ActionConfig#{<<"connector">> => ConnectorName}
|
|
|
+ ).
|
|
|
+
|
|
|
+bridge_v1_config_to_connector_config(BridgeV1Config) ->
|
|
|
+ ActionTopLevelKeys = schema_keys(sqlserver_action),
|
|
|
+ ActionParametersKeys = schema_keys(action_parameters),
|
|
|
+ ActionKeys = ActionTopLevelKeys ++ ActionParametersKeys,
|
|
|
+ ConnectorTopLevelKeys = schema_keys("config_connector"),
|
|
|
+ ConnectorKeys = maps:keys(BridgeV1Config) -- (ActionKeys -- ConnectorTopLevelKeys),
|
|
|
+ ConnConfig0 = maps:with(ConnectorKeys, BridgeV1Config),
|
|
|
+ emqx_utils_maps:update_if_present(
|
|
|
+ <<"resource_opts">>,
|
|
|
+ fun emqx_connector_schema:project_to_connector_resource_opts/1,
|
|
|
+ ConnConfig0
|
|
|
+ ).
|
|
|
+
|
|
|
+connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig) ->
|
|
|
+ V1Config = emqx_action_info:connector_action_config_to_bridge_v1_config(
|
|
|
+ ConnectorConfig, ActionConfig
|
|
|
+ ),
|
|
|
+ maps:remove(<<"local_topic">>, V1Config).
|
|
|
|
|
|
-action_type_name() -> sqlserver.
|
|
|
+make_config_map(PickKeys, IndentKeys, Config) ->
|
|
|
+ Conf0 = maps:with(PickKeys, Config),
|
|
|
+ emqx_utils_maps:indent(<<"parameters">>, IndentKeys, Conf0).
|
|
|
|
|
|
-connector_type_name() -> sqlserver.
|
|
|
+schema_keys(Name) ->
|
|
|
+ schema_keys(?SCHEMA_MODULE, Name).
|
|
|
|
|
|
-schema_module() -> emqx_bridge_sqlserver.
|
|
|
+schema_keys(Mod, Name) ->
|
|
|
+ [bin(Key) || Key <- proplists:get_keys(Mod:fields(Name))].
|