Huawei: Use single query for P2P timestamp

This commit is contained in:
Martin.JM
2025-08-17 11:25:29 +02:00
parent 2bd5a917bb
commit 5f40d3f532
@@ -2195,30 +2195,23 @@ public class HuaweiSupportProvider {
Long userId = DBHelper.getUser(db.getDaoSession()).getId();
Long deviceId = DBHelper.getDevice(gbDevice, db.getDaoSession()).getId();
List<HuaweiDictData> results;
QueryBuilder<HuaweiDictData> qbModify = db.getDaoSession().getHuaweiDictDataDao().queryBuilder().where(
QueryBuilder<HuaweiDictData> qb = db.getDaoSession().getHuaweiDictDataDao().queryBuilder().where(
HuaweiDictDataDao.Properties.UserId.eq(userId),
HuaweiDictDataDao.Properties.DeviceId.eq(deviceId),
HuaweiDictDataDao.Properties.DictClass.eq(dictClass)
).orderDesc(
HuaweiDictDataDao.Properties.ModifyTimestamp
).orderRaw(
// "max(MODIFY_TIMESTAMP, END_TIMESTAMP) DESC"
String.format(
"max(%s, %s) DESC",
HuaweiDictDataDao.Properties.ModifyTimestamp.columnName,
HuaweiDictDataDao.Properties.EndTimestamp.columnName
)
).limit(1);
results = qbModify.build().list();
if (!results.isEmpty())
List<HuaweiDictData> results = qb.build().list();
if (!results.isEmpty()) {
lastTimestamp = Math.max(lastTimestamp, results.get(0).getModifyTimestamp());
QueryBuilder<HuaweiDictData> qbEndTimestamp = db.getDaoSession().getHuaweiDictDataDao().queryBuilder().where(
HuaweiDictDataDao.Properties.UserId.eq(userId),
HuaweiDictDataDao.Properties.DeviceId.eq(deviceId),
HuaweiDictDataDao.Properties.DictClass.eq(dictClass)
).orderDesc(
HuaweiDictDataDao.Properties.EndTimestamp
).limit(1);
results = qbEndTimestamp.build().list();
if (!results.isEmpty())
lastTimestamp = Math.max(lastTimestamp, results.get(0).getEndTimestamp());
}
} catch (Exception e) {
LOG.error("Failed to select last timestamp value to database", e);
}