Skip to content

Commit

Permalink
rewritten MySqlConnector::parseConfigOptions()
Browse files Browse the repository at this point in the history
  • Loading branch information
silverqx committed Jan 18, 2022
1 parent f4106a8 commit 0442807
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
28 changes: 15 additions & 13 deletions src/orm/connectors/mysqlconnector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<QString, BannedValue> 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));
}
}

Expand Down
1 change: 1 addition & 0 deletions src/orm/support/configurationoptionsparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<QVariantHash>();
Expand Down

0 comments on commit 0442807

Please sign in to comment.