From 0442807a51a6e7cf0e26de04074b56b4104f50c4 Mon Sep 17 00:00:00 2001 From: silverqx Date: Tue, 18 Jan 2022 10:00:40 +0100 Subject: [PATCH] rewritten MySqlConnector::parseConfigOptions() --- src/orm/connectors/mysqlconnector.cpp | 28 ++++++++++--------- .../support/configurationoptionsparser.cpp | 1 + 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/orm/connectors/mysqlconnector.cpp b/src/orm/connectors/mysqlconnector.cpp index 95e29d3ce..81dec9b9e 100644 --- a/src/orm/connectors/mysqlconnector.cpp +++ b/src/orm/connectors/mysqlconnector.cpp @@ -61,26 +61,28 @@ MySqlConnector::getConnectorOptions() const void MySqlConnector::parseConfigOptions(QVariantHash &options) const { + struct BannedValue + { + QVariant value; + QString message; + }; + // This connection options are banned - static const QVariantHash banned { + static const std::unordered_map bannedMap { // We have our own reconnector - {QStringLiteral("MYSQL_OPT_RECONNECT"), 1}, + {QStringLiteral("MYSQL_OPT_RECONNECT"), + {1, QStringLiteral(" TinyORM uses its own reconnector.")}}, }; - auto itOption = banned.constBegin(); - while (itOption != banned.constEnd()) { - const auto &key = itOption.key(); - const auto &value = itOption.value(); + for (const auto &banned : bannedMap) { + const auto &key = banned.first; + const auto &value = banned.second; - // BUG rewrite silverqx - if (options.contains(key) && options[key] == value) + if (options.contains(key) && options[key] == value.value) throw Exceptions::RuntimeError( QStringLiteral( - "The connection option '%1' is not allowed in the TinyORM, " - "TinyORM uses its own reconnector.") - .arg(key)); - - ++itOption; + "The '%1' connection option is not allowed in the TinyORM.%2") + .arg(key, value.message)); } } diff --git a/src/orm/support/configurationoptionsparser.cpp b/src/orm/support/configurationoptionsparser.cpp index 31268c8be..4d13d94c4 100644 --- a/src/orm/support/configurationoptionsparser.cpp +++ b/src/orm/support/configurationoptionsparser.cpp @@ -60,6 +60,7 @@ ConfigurationOptionsParser::validateConfigOptions(const QVariant &options) const QVariantHash ConfigurationOptionsParser::prepareConfigOptions(const QVariant &options) const { + // CUR verify, I have qt5/6 macros across whole app for this silverqx // Input is already validated, so I can be sure that options key is QVariantHash if (options.userType() != QMetaType::QString) return options.value();