From aa368bb9d04b4a34054f26ce964e3b643fc50923 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Wed, 20 Mar 2024 13:49:28 +0100 Subject: [PATCH] refactor(redis connector): to use emqx_connector_info This commit refactors the redis connector to use the `emqx_connector_info` behavior. --- .../src/emqx_bridge_redis.app.src | 5 ++- .../src/emqx_bridge_redis_connector_info.erl | 42 +++++++++++++++++++ .../src/emqx_connector_info.erl | 3 +- .../src/schema/emqx_connector_ee_schema.erl | 12 ------ .../src/schema/emqx_connector_schema.erl | 4 +- 5 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 apps/emqx_bridge_redis/src/emqx_bridge_redis_connector_info.erl diff --git a/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src b/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src index 8e737c4a3..57b4d90f1 100644 --- a/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src +++ b/apps/emqx_bridge_redis/src/emqx_bridge_redis.app.src @@ -1,6 +1,6 @@ {application, emqx_bridge_redis, [ {description, "EMQX Enterprise Redis Bridge"}, - {vsn, "0.1.5"}, + {vsn, "0.1.6"}, {registered, []}, {applications, [ kernel, @@ -9,7 +9,8 @@ emqx_redis ]}, {env, [ - {emqx_action_info_modules, [emqx_bridge_redis_action_info]} + {emqx_action_info_modules, [emqx_bridge_redis_action_info]}, + {emqx_connector_info_modules, [emqx_bridge_redis_connector_info]} ]}, {modules, []}, {links, []} diff --git a/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector_info.erl b/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector_info.erl new file mode 100644 index 000000000..8a3cdd6cd --- /dev/null +++ b/apps/emqx_bridge_redis/src/emqx_bridge_redis_connector_info.erl @@ -0,0 +1,42 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2023-2024 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- +-module(emqx_bridge_redis_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() -> + redis. + +bridge_types() -> + [redis, redis_single, redis_sentinel, redis_cluster]. + +resource_callback_module() -> + emqx_bridge_redis_connector. + +config_schema() -> + {redis, + hoconsc:mk( + hoconsc:map(name, hoconsc:ref(emqx_bridge_redis_schema, "config_connector")), + #{ + desc => <<"Redis Connector Config">>, + required => false + } + )}. + +schema_module() -> + emqx_bridge_redis_schema. + +api_schema(Method) -> + emqx_connector_schema:api_ref( + emqx_bridge_redis_schema, <<"mysql">>, Method ++ "_connector" + ). diff --git a/apps/emqx_connector/src/emqx_connector_info.erl b/apps/emqx_connector/src/emqx_connector_info.erl index 67de571f9..36b01d6eb 100644 --- a/apps/emqx_connector/src/emqx_connector_info.erl +++ b/apps/emqx_connector/src/emqx_connector_info.erl @@ -73,7 +73,8 @@ hard_coded_connector_info_modules_ee() -> emqx_bridge_influxdb_connector_info, emqx_bridge_cassandra_connector_info, emqx_bridge_clickhouse_connector_info, - emqx_bridge_mysql_connector_info + emqx_bridge_mysql_connector_info, + emqx_bridge_redis_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 57c176b02..f2aed272d 100644 --- a/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl +++ b/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl @@ -27,8 +27,6 @@ resource_type(syskeeper_proxy) -> emqx_bridge_syskeeper_proxy_server; resource_type(sqlserver) -> emqx_bridge_sqlserver_connector; -resource_type(redis) -> - emqx_bridge_redis_connector; resource_type(rocketmq) -> emqx_bridge_rocketmq_connector; resource_type(iotdb) -> @@ -75,14 +73,6 @@ fields(connectors) -> connector_structs() -> [ - {redis, - mk( - hoconsc:map(name, ref(emqx_bridge_redis_schema, "config_connector")), - #{ - desc => <<"Redis Connector Config">>, - required => false - } - )}, {rocketmq, mk( hoconsc:map(name, ref(emqx_bridge_rocketmq, "config_connector")), @@ -187,7 +177,6 @@ schema_modules() -> emqx_bridge_syskeeper_proxy, emqx_bridge_sqlserver, emqx_postgresql_connector_schema, - emqx_bridge_redis_schema, emqx_bridge_rocketmq, emqx_bridge_iotdb_connector, emqx_bridge_es_connector, @@ -206,7 +195,6 @@ api_schemas(Method) -> api_ref(emqx_bridge_syskeeper_connector, <<"syskeeper_forwarder">>, Method), api_ref(emqx_bridge_syskeeper_proxy, <<"syskeeper_proxy">>, Method), api_ref(emqx_bridge_sqlserver, <<"sqlserver">>, Method ++ "_connector"), - api_ref(emqx_bridge_redis_schema, <<"redis">>, Method ++ "_connector"), api_ref(emqx_bridge_rocketmq, <<"rocketmq">>, Method ++ "_connector"), api_ref(emqx_bridge_iotdb_connector, <<"iotdb">>, Method), api_ref(emqx_bridge_es_connector, <<"elasticsearch">>, Method), diff --git a/apps/emqx_connector/src/schema/emqx_connector_schema.erl b/apps/emqx_connector/src/schema/emqx_connector_schema.erl index 2af7cc52d..0a1967dd1 100644 --- a/apps/emqx_connector/src/schema/emqx_connector_schema.erl +++ b/apps/emqx_connector/src/schema/emqx_connector_schema.erl @@ -87,7 +87,7 @@ enterprise_fields_connectors() -> []. -endif. -api_schemas(Method) -> +api_schemas(_Method) -> []. api_ref(Module, Type, Method) -> @@ -122,8 +122,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(redis) -> - [redis, redis_single, redis_sentinel, redis_cluster]; connector_type_to_bridge_types(rocketmq) -> [rocketmq]; connector_type_to_bridge_types(syskeeper_forwarder) ->