Parcourir la source

refactor(gcp_pubsub connectors): to use emqx_connector_info

This commit refactors the emqx_bridge_gcp_pubsub app to use the
emqx_connector_info behavior. The emqx_bridge_gcp_pubsub
related information can thus be removed from emqx_connector_ee_schema
and emqx_connector_schema.
Kjell Winblad il y a 1 an
Parent
commit
d0bebe8b93

+ 4 - 0
apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub.app.src

@@ -12,6 +12,10 @@
         {emqx_action_info_modules, [
             emqx_bridge_gcp_pubsub_producer_action_info,
             emqx_bridge_gcp_pubsub_consumer_action_info
+        ]},
+        {emqx_connector_info_modules, [
+            emqx_bridge_gcp_pubsub_producer_connector_info,
+            emqx_bridge_gcp_pubsub_consumer_connector_info
         ]}
     ]},
     {modules, []},

+ 45 - 0
apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_consumer_connector_info.erl

@@ -0,0 +1,45 @@
+%%--------------------------------------------------------------------
+%% Copyright (c) 2023-2024 EMQ Technologies Co., Ltd. All Rights Reserved.
+%%--------------------------------------------------------------------
+
+-module(emqx_bridge_gcp_pubsub_consumer_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() ->
+    gcp_pubsub_consumer.
+
+bridge_types() ->
+    [gcp_pubsub_consumer].
+
+resource_callback_module() ->
+    emqx_bridge_gcp_pubsub_impl_consumer.
+
+config_schema() ->
+    {gcp_pubsub_consumer,
+        hoconsc:mk(
+            hoconsc:map(
+                name, hoconsc:ref(emqx_bridge_gcp_pubsub_consumer_schema, "config_connector")
+            ),
+            #{
+                desc => <<"GCP PubSub Consumer Connector Config">>,
+                required => false
+            }
+        )}.
+
+schema_module() ->
+    emqx_bridge_gcp_pubsub_consumer_schema.
+
+api_schema(Method) ->
+    emqx_connector_schema:api_ref(
+        emqx_bridge_gcp_pubsub_consumer_schema, <<"gcp_pubsub_consumer">>, Method ++ "_connector"
+    ).

+ 45 - 0
apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_producer_connector_info.erl

@@ -0,0 +1,45 @@
+%%--------------------------------------------------------------------
+%% Copyright (c) 2023-2024 EMQ Technologies Co., Ltd. All Rights Reserved.
+%%--------------------------------------------------------------------
+
+-module(emqx_bridge_gcp_pubsub_producer_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() ->
+    gcp_pubsub_producer.
+
+bridge_types() ->
+    [gcp_pubsub, gcp_pubsub_producer].
+
+resource_callback_module() ->
+    emqx_bridge_gcp_pubsub_impl_producer.
+
+config_schema() ->
+    {gcp_pubsub_producer,
+        hoconsc:mk(
+            hoconsc:map(
+                name, hoconsc:ref(emqx_bridge_gcp_pubsub_producer_schema, "config_connector")
+            ),
+            #{
+                desc => <<"GCP PubSub Producer Connector Config">>,
+                required => false
+            }
+        )}.
+
+schema_module() ->
+    emqx_bridge_gcp_pubsub_producer_schema.
+
+api_schema(Method) ->
+    emqx_connector_schema:api_ref(
+        emqx_bridge_gcp_pubsub_producer_schema, <<"gcp_pubsub_producer">>, Method ++ "_connector"
+    ).

+ 3 - 1
apps/emqx_connector/src/emqx_connector_info.erl

@@ -58,7 +58,9 @@ hard_coded_connector_info_modules_ee() ->
     [
         emqx_bridge_dynamo_connector_info,
         emqx_bridge_azure_event_hub_connector_info,
-        emqx_bridge_confluent_producer_connector_info
+        emqx_bridge_confluent_producer_connector_info,
+        emqx_bridge_gcp_pubsub_consumer_connector_info,
+        emqx_bridge_gcp_pubsub_producer_connector_info
     ].
 -else.
 hard_coded_connector_info_modules_ee() ->

+ 0 - 32
apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl

@@ -21,10 +21,6 @@
 
 resource_type(Type) when is_binary(Type) ->
     resource_type(binary_to_atom(Type, utf8));
-resource_type(gcp_pubsub_consumer) ->
-    emqx_bridge_gcp_pubsub_impl_consumer;
-resource_type(gcp_pubsub_producer) ->
-    emqx_bridge_gcp_pubsub_impl_producer;
 resource_type(hstreamdb) ->
     emqx_bridge_hstreamdb_connector;
 resource_type(kafka_consumer) ->
@@ -110,22 +106,6 @@ fields(connectors) ->
 
 connector_structs() ->
     [
-        {gcp_pubsub_consumer,
-            mk(
-                hoconsc:map(name, ref(emqx_bridge_gcp_pubsub_consumer_schema, "config_connector")),
-                #{
-                    desc => <<"GCP PubSub Consumer Connector Config">>,
-                    required => false
-                }
-            )},
-        {gcp_pubsub_producer,
-            mk(
-                hoconsc:map(name, ref(emqx_bridge_gcp_pubsub_producer_schema, "config_connector")),
-                #{
-                    desc => <<"GCP PubSub Producer Connector Config">>,
-                    required => false
-                }
-            )},
         {hstreamdb,
             mk(
                 hoconsc:map(name, ref(emqx_bridge_hstreamdb, "config_connector")),
@@ -339,8 +319,6 @@ connector_structs() ->
 
 schema_modules() ->
     [
-        emqx_bridge_gcp_pubsub_consumer_schema,
-        emqx_bridge_gcp_pubsub_producer_schema,
         emqx_bridge_hstreamdb,
         emqx_bridge_kafka,
         emqx_bridge_kafka_consumer_schema,
@@ -373,16 +351,6 @@ api_schemas(Method) ->
     [
         %% We need to map the `type' field of a request (binary) to a
         %% connector schema module.
-        api_ref(
-            emqx_bridge_gcp_pubsub_consumer_schema,
-            <<"gcp_pubsub_consumer">>,
-            Method ++ "_connector"
-        ),
-        api_ref(
-            emqx_bridge_gcp_pubsub_producer_schema,
-            <<"gcp_pubsub_producer">>,
-            Method ++ "_connector"
-        ),
         api_ref(emqx_bridge_hstreamdb, <<"hstreamdb">>, Method ++ "_connector"),
         api_ref(emqx_bridge_kafka, <<"kafka_producer">>, Method ++ "_connector"),
         api_ref(emqx_bridge_kafka_consumer_schema, <<"kafka_consumer">>, Method ++ "_connector"),

+ 0 - 4
apps/emqx_connector/src/schema/emqx_connector_schema.erl

@@ -130,10 +130,6 @@ connector_info_schema_modules() ->
 %% from the latest connector type name.
 connector_type_to_bridge_types(http) ->
     [webhook, http];
-connector_type_to_bridge_types(gcp_pubsub_consumer) ->
-    [gcp_pubsub_consumer];
-connector_type_to_bridge_types(gcp_pubsub_producer) ->
-    [gcp_pubsub, gcp_pubsub_producer];
 connector_type_to_bridge_types(hstreamdb) ->
     [hstreamdb];
 connector_type_to_bridge_types(kafka_consumer) ->