Merge pull request #10794 from paulozulato/fix-oracle-database-field

Fix oracle database field
This commit is contained in:
Zaiming (Stone) Shi 2023-05-25 08:14:13 +02:00 committed by GitHub
commit ba41c23b7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 43 additions and 16 deletions

View File

@ -1,6 +1,6 @@
{application, emqx_bridge_oracle, [ {application, emqx_bridge_oracle, [
{description, "EMQX Enterprise Oracle Database Bridge"}, {description, "EMQX Enterprise Oracle Database Bridge"},
{vsn, "0.1.0"}, {vsn, "0.1.1"},
{registered, []}, {registered, []},
{applications, [ {applications, [
kernel, kernel,

View File

@ -20,7 +20,7 @@
]). ]).
-define(DEFAULT_SQL, << -define(DEFAULT_SQL, <<
"insert into t_mqtt_msg(msgid, topic, qos, payload)" "insert into t_mqtt_msgs(msgid, topic, qos, payload) "
"values (${id}, ${topic}, ${qos}, ${payload})" "values (${id}, ${topic}, ${qos}, ${payload})"
>>). >>).
@ -41,7 +41,7 @@ values(_Method) ->
name => <<"foo">>, name => <<"foo">>,
server => <<"127.0.0.1:1521">>, server => <<"127.0.0.1:1521">>,
pool_size => 8, pool_size => 8,
database => <<"ORCL">>, service_name => <<"ORCL">>,
sid => <<"ORCL">>, sid => <<"ORCL">>,
username => <<"root">>, username => <<"root">>,
password => <<"******">>, password => <<"******">>,

View File

@ -14,7 +14,7 @@
-define(BRIDGE_TYPE_BIN, <<"oracle">>). -define(BRIDGE_TYPE_BIN, <<"oracle">>).
-define(APPS, [emqx_bridge, emqx_resource, emqx_rule_engine, emqx_oracle, emqx_bridge_oracle]). -define(APPS, [emqx_bridge, emqx_resource, emqx_rule_engine, emqx_oracle, emqx_bridge_oracle]).
-define(DATABASE, "XE"). -define(SID, "XE").
-define(RULE_TOPIC, "mqtt/rule"). -define(RULE_TOPIC, "mqtt/rule").
% -define(RULE_TOPIC_BIN, <<?RULE_TOPIC>>). % -define(RULE_TOPIC_BIN, <<?RULE_TOPIC>>).
@ -196,7 +196,6 @@ oracle_config(TestCase, _ConnectionType, Config) ->
io_lib:format( io_lib:format(
"bridges.oracle.~s {\n" "bridges.oracle.~s {\n"
" enable = true\n" " enable = true\n"
" database = \"~s\"\n"
" sid = \"~s\"\n" " sid = \"~s\"\n"
" server = \"~s\"\n" " server = \"~s\"\n"
" username = \"system\"\n" " username = \"system\"\n"
@ -215,8 +214,7 @@ oracle_config(TestCase, _ConnectionType, Config) ->
"}\n", "}\n",
[ [
Name, Name,
?DATABASE, ?SID,
?DATABASE,
ServerURL, ServerURL,
sql_insert_template_for_bridge() sql_insert_template_for_bridge()
] ]

View File

@ -75,8 +75,6 @@ on_start(
InstId, InstId,
#{ #{
server := Server, server := Server,
database := DB,
sid := Sid,
username := User username := User
} = Config } = Config
) -> ) ->
@ -91,15 +89,19 @@ on_start(
jamdb_oracle_conn:set_max_cursors_number(?MAX_CURSORS), jamdb_oracle_conn:set_max_cursors_number(?MAX_CURSORS),
#{hostname := Host, port := Port} = emqx_schema:parse_server(Server, oracle_host_options()), #{hostname := Host, port := Port} = emqx_schema:parse_server(Server, oracle_host_options()),
ServiceName = maps:get(<<"service_name">>, Config, Sid), Sid = maps:get(sid, Config, ""),
ServiceName =
case maps:get(service_name, Config, undefined) of
undefined -> undefined;
ServiceName0 -> emqx_plugin_libs_rule:str(ServiceName0)
end,
Options = [ Options = [
{host, Host}, {host, Host},
{port, Port}, {port, Port},
{user, emqx_plugin_libs_rule:str(User)}, {user, emqx_plugin_libs_rule:str(User)},
{password, jamdb_secret:wrap(maps:get(password, Config, ""))}, {password, jamdb_secret:wrap(maps:get(password, Config, ""))},
{sid, emqx_plugin_libs_rule:str(Sid)}, {sid, emqx_plugin_libs_rule:str(Sid)},
{service_name, emqx_plugin_libs_rule:str(ServiceName)}, {service_name, ServiceName},
{database, DB},
{pool_size, maps:get(<<"pool_size">>, Config, ?DEFAULT_POOL_SIZE)}, {pool_size, maps:get(<<"pool_size">>, Config, ?DEFAULT_POOL_SIZE)},
{timeout, ?OPT_TIMEOUT}, {timeout, ?OPT_TIMEOUT},
{app_name, "EMQX Data To Oracle Database Action"} {app_name, "EMQX Data To Oracle Database Action"}

View File

@ -19,9 +19,11 @@ roots() ->
[{config, #{type => hoconsc:ref(?REF_MODULE, config)}}]. [{config, #{type => hoconsc:ref(?REF_MODULE, config)}}].
fields(config) -> fields(config) ->
[{server, server()}, {sid, fun sid/1}] ++ Fields =
emqx_connector_schema_lib:relational_db_fields() ++ [{server, server()}, {sid, fun sid/1}, {service_name, fun service_name/1}] ++
emqx_connector_schema_lib:prepare_statement_fields(). emqx_connector_schema_lib:relational_db_fields() ++
emqx_connector_schema_lib:prepare_statement_fields(),
proplists:delete(database, Fields).
server() -> server() ->
Meta = #{desc => ?DESC(?REF_MODULE, "server")}, Meta = #{desc => ?DESC(?REF_MODULE, "server")},
@ -29,5 +31,10 @@ server() ->
sid(type) -> binary(); sid(type) -> binary();
sid(desc) -> ?DESC(?REF_MODULE, "sid"); sid(desc) -> ?DESC(?REF_MODULE, "sid");
sid(required) -> true; sid(required) -> false;
sid(_) -> undefined. sid(_) -> undefined.
service_name(type) -> binary();
service_name(desc) -> ?DESC(?REF_MODULE, "service_name");
service_name(required) -> false;
service_name(_) -> undefined.

View File

@ -29,6 +29,11 @@ emqx_bridge_oracle {
label = "Oracle Database Sid." label = "Oracle Database Sid."
} }
service_name {
desc = "Service Name for Oracle Database."
label = "Oracle Database Service Name"
}
config_enable { config_enable {
desc = "Enable or disable this bridge" desc = "Enable or disable this bridge"
label = "Enable Or Disable Bridge" label = "Enable Or Disable Bridge"

View File

@ -12,4 +12,9 @@ emqx_oracle {
label = "Oracle Database Sid" label = "Oracle Database Sid"
} }
service_name {
desc = "Service Name for Oracle Database."
label = "Oracle Database Service Name"
}
} }

View File

@ -28,6 +28,11 @@ emqx_bridge_oracle {
label = "Oracle Database Sid" label = "Oracle Database Sid"
} }
service_name {
desc = "Oracle Database 服务名称。"
label = "Oracle Database 服务名称"
}
config_enable { config_enable {
desc = "启用/禁用桥接" desc = "启用/禁用桥接"
label = "启用/禁用桥接" label = "启用/禁用桥接"

View File

@ -12,4 +12,9 @@ emqx_oracle {
label = "Oracle Database Sid" label = "Oracle Database Sid"
} }
service_name {
desc = "Oracle Database 服务名称。"
label = "Oracle Database 服务名称"
}
} }