summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2019-02-03 12:53:54 +0100
committerStanislaw Halik <sthalik@misaki.pl>2019-02-09 12:13:29 +0100
commit6b82b38a841ce2b9c98e1c4671f51147e1d2a453 (patch)
treedd341170ae2210e0ed80591fbe4f79ddea1950b2
parent6325d311627a8288693331d16069fd16c5fac6c6 (diff)
migration: fix lazily-written module name migration
-rw-r--r--migration/20180428_00-module-names.cpp64
1 files changed, 36 insertions, 28 deletions
diff --git a/migration/20180428_00-module-names.cpp b/migration/20180428_00-module-names.cpp
index 174ca7ee..0c59add9 100644
--- a/migration/20180428_00-module-names.cpp
+++ b/migration/20180428_00-module-names.cpp
@@ -12,6 +12,21 @@ struct module_names : migration
using dylib_ptr = Modules::dylib_ptr;
using dylib_list = Modules::dylib_list;
+ struct module_type {
+ QString name, def;
+ dylib_list const& list;
+ };
+
+ Modules m { OPENTRACK_BASE_PATH + OPENTRACK_LIBRARY_PATH };
+
+ module_type types[3] {
+ { "tracker-dll", "pt", m.trackers() },
+ { "protocol-dll", "freetrack", m.protocols() },
+ { "filter-dll", "accela", m.filters() },
+ };
+
+ bundle b { make_bundle("modules") };
+
QString unique_date() const override
{
return "20180428_00";
@@ -24,46 +39,39 @@ struct module_names : migration
bool should_run() const override
{
- return true;
- }
-
- void run() override
- {
- struct module_type {
- QString name, def;
- dylib_list const& list;
- };
+ for (const module_type& type : types)
+ {
+ if (!b->contains(type.name))
+ continue;
- Modules m { OPENTRACK_BASE_PATH + OPENTRACK_LIBRARY_PATH };
+ const QString value = b->get_variant(type.name).value<QString>();
- module_type types[3] {
- { "tracker-dll", "pt", m.trackers() },
- { "protocol-dll", "freetrack", m.protocols() },
- { "filter-dll", "accela", m.filters() },
- };
+ for (const dylib_ptr& lib : type.list)
+ {
+ if (value == lib->name && value != lib->module_name)
+ return true;
+ }
+ }
- bundle b = make_bundle("modules");
+ return false;
+ }
+ void run() override
+ {
for (module_type& type : types)
{
- QByteArray n = type.name.toUtf8();
-
if (!b->contains(type.name))
- {
- qDebug() << n.constData() << "=>" << "EMPTY";
- b->store_kv(type.name, type.def);
continue;
- }
- QString value = b->get_variant(type.name).value<QString>();
+ const QString value = b->get_variant(type.name).value<QString>();
bool found = false;
- for (dylib_ptr lib : type.list)
+ for (const dylib_ptr& lib : type.list)
{
- if (value == lib->name)
+ if (value == lib->name && value != lib->module_name)
{
- qDebug() << n.constData() << "=>" << lib->module_name;
+ qDebug() << type.name << value << "=>" << lib->module_name;
b->store_kv(type.name, lib->module_name);
found = true;
break;
@@ -72,8 +80,8 @@ struct module_names : migration
if (!found)
{
- qDebug() << n.constData() << "=>" << "not found" << value;
- b->store_kv(type.name, type.def);
+ qDebug() << type.name << value << "not found";
+ b->store_kv(type.name, QVariant());
}
}