From c1e6092013602bcd5fd8765189f4282fe86422e0 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Wed, 20 Mar 2024 10:12:55 +0100 Subject: [PATCH] refactor(oracle connector): to use emqx_connector_info This commit refactors the oracle connector to use the `emqx_connector_info` behavior. --- .../src/emqx_bridge_oracle.app.src | 5 ++- .../src/emqx_bridge_oracle_connector_info.erl | 44 +++++++++++++++++++ .../src/emqx_connector_info.erl | 3 +- .../src/schema/emqx_connector_ee_schema.erl | 13 ------ .../src/schema/emqx_connector_schema.erl | 2 - 5 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 apps/emqx_bridge_oracle/src/emqx_bridge_oracle_connector_info.erl diff --git a/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src index 39b606d5f..1e360aa39 100644 --- a/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src +++ b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle.app.src @@ -8,7 +8,10 @@ emqx_resource, emqx_oracle ]}, - {env, [{emqx_action_info_modules, [emqx_bridge_oracle_action_info]}]}, + {env, [ + {emqx_action_info_modules, [emqx_bridge_oracle_action_info]}, + {emqx_connector_info_modules, [emqx_bridge_oracle_connector_info]} + ]}, {modules, []}, {links, []} diff --git a/apps/emqx_bridge_oracle/src/emqx_bridge_oracle_connector_info.erl b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle_connector_info.erl new file mode 100644 index 000000000..e4c3dcbf4 --- /dev/null +++ b/apps/emqx_bridge_oracle/src/emqx_bridge_oracle_connector_info.erl @@ -0,0 +1,44 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2022-2024 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_oracle_connector_info). + +-behaviour(emqx_connector_info). + +-export([ + type_name/0, + bridge_types/0, + resource_callback_module/0, + config_schema/0, + schema_module/0, + api_schema/1 +]). + +type_name() -> + oracle. + +bridge_types() -> + [oracle]. + +resource_callback_module() -> + emqx_oracle. + +config_schema() -> + {oracle, + hoconsc:mk( + hoconsc:map(name, hoconsc:ref(emqx_bridge_oracle, "config_connector")), + #{ + desc => <<"Oracle Connector Config">>, + required => false, + validator => fun emqx_bridge_oracle:config_validator/1 + } + )}. + +schema_module() -> + emqx_bridge_oracle. + +api_schema(Method) -> + emqx_connector_schema:api_ref( + emqx_bridge_oracle, <<"oracle">>, Method ++ "_connector" + ). diff --git a/apps/emqx_connector/src/emqx_connector_info.erl b/apps/emqx_connector/src/emqx_connector_info.erl index fe5c8e514..8f3ab7755 100644 --- a/apps/emqx_connector/src/emqx_connector_info.erl +++ b/apps/emqx_connector/src/emqx_connector_info.erl @@ -68,7 +68,8 @@ hard_coded_connector_info_modules_ee() -> emqx_bridge_matrix_connector_info, emqx_bridge_pgsql_connector_info, emqx_bridge_timescale_connector_info, - emqx_bridge_mongodb_connector_info + emqx_bridge_mongodb_connector_info, + emqx_bridge_oracle_connector_info ]. -else. hard_coded_connector_info_modules_ee() -> diff --git a/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl b/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl index 022a2a0a8..b16864947 100644 --- a/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl +++ b/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl @@ -21,8 +21,6 @@ resource_type(Type) when is_binary(Type) -> resource_type(binary_to_atom(Type, utf8)); -resource_type(oracle) -> - emqx_oracle; resource_type(influxdb) -> emqx_bridge_influxdb_connector; resource_type(cassandra) -> @@ -85,15 +83,6 @@ fields(connectors) -> connector_structs() -> [ - {oracle, - mk( - hoconsc:map(name, ref(emqx_bridge_oracle, "config_connector")), - #{ - desc => <<"Oracle Connector Config">>, - required => false, - validator => fun emqx_bridge_oracle:config_validator/1 - } - )}, {influxdb, mk( hoconsc:map(name, ref(emqx_bridge_influxdb, "config_connector")), @@ -234,7 +223,6 @@ connector_structs() -> schema_modules() -> [ - emqx_bridge_oracle, emqx_bridge_influxdb, emqx_bridge_cassandra, emqx_bridge_clickhouse, @@ -259,7 +247,6 @@ api_schemas(Method) -> [ %% We need to map the `type' field of a request (binary) to a %% connector schema module. - api_ref(emqx_bridge_oracle, <<"oracle">>, Method ++ "_connector"), api_ref(emqx_bridge_influxdb, <<"influxdb">>, Method ++ "_connector"), api_ref(emqx_bridge_cassandra, <<"cassandra">>, Method ++ "_connector"), api_ref(emqx_bridge_clickhouse, <<"clickhouse">>, Method ++ "_connector"), diff --git a/apps/emqx_connector/src/schema/emqx_connector_schema.erl b/apps/emqx_connector/src/schema/emqx_connector_schema.erl index 9c0e7cc92..2a0d92203 100644 --- a/apps/emqx_connector/src/schema/emqx_connector_schema.erl +++ b/apps/emqx_connector/src/schema/emqx_connector_schema.erl @@ -127,8 +127,6 @@ connector_info_schema_modules() -> %% @doc Return old bridge(v1) and/or connector(v2) type %% from the latest connector type name. -connector_type_to_bridge_types(oracle) -> - [oracle]; connector_type_to_bridge_types(influxdb) -> [influxdb, influxdb_api_v1, influxdb_api_v2]; connector_type_to_bridge_types(cassandra) ->