Sqlite: Simplify insertUpdateDelete

That hopefully is clearing up the intention.

Change-Id: I89ef34dddaf8453b28361be8875c73d0dd4e9d5b
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Marco Bubke
2025-03-07 19:03:03 +01:00
parent 993e88e088
commit ef711343af

View File

@@ -36,14 +36,7 @@ void insertUpdateDelete(SqliteRange &&sqliteRange,
auto endValueIterator = values.end();
auto lastValueIterator = endValueIterator;
while (true) {
bool hasMoreValues = currentValueIterator != endValueIterator;
bool hasMoreSqliteValues = currentSqliteIterator != endSqliteIterator;
if (hasMoreValues && hasMoreSqliteValues) {
auto &&sqliteValue = *currentSqliteIterator;
auto &&value = *currentValueIterator;
auto compare = compareKey(sqliteValue, value);
if (compare == 0) {
auto doUpdate = [&](const auto &sqliteValue, const auto &value) {
UpdateChange updateChange = updateCallback(sqliteValue, value);
switch (updateChange) {
case UpdateChange::Update:
@@ -55,10 +48,14 @@ void insertUpdateDelete(SqliteRange &&sqliteRange,
}
++currentSqliteIterator;
++currentValueIterator;
} else if (compare > 0) {
};
auto doInsert = [&](const auto &value) {
insertCallback(value);
++currentValueIterator;
} else if (compare < 0) {
};
auto doDelete = [&](const auto &sqliteValue) {
if (lastValueIterator != endValueIterator) {
if (compareKey(sqliteValue, *lastValueIterator) != 0)
deleteCallback(sqliteValue);
@@ -67,20 +64,25 @@ void insertUpdateDelete(SqliteRange &&sqliteRange,
deleteCallback(sqliteValue);
}
++currentSqliteIterator;
}
} else if (hasMoreValues) {
insertCallback(*currentValueIterator);
++currentValueIterator;
} else if (hasMoreSqliteValues) {
};
while (true) {
bool hasMoreValues = currentValueIterator != endValueIterator;
bool hasMoreSqliteValues = currentSqliteIterator != endSqliteIterator;
if (hasMoreValues && hasMoreSqliteValues) {
auto &&sqliteValue = *currentSqliteIterator;
if (lastValueIterator != endValueIterator) {
if (compareKey(sqliteValue, *lastValueIterator) != 0)
deleteCallback(sqliteValue);
lastValueIterator = endValueIterator;
} else {
deleteCallback(sqliteValue);
}
++currentSqliteIterator;
auto &&value = *currentValueIterator;
auto compare = compareKey(sqliteValue, value);
if (compare == 0)
doUpdate(sqliteValue, value);
else if (compare > 0)
doInsert(value);
else if (compare < 0)
doDelete(sqliteValue);
} else if (hasMoreValues) {
doInsert(*currentValueIterator);
} else if (hasMoreSqliteValues) {
doDelete(*currentSqliteIterator);
} else {
break;
}