#include "WifiConnectionDAO.h" #include #include #include #include #include "DatabaseManager.h" namespace { WifiConnection parseRow(const QSqlQuery &query) { WifiConnection wc; wc.androidId = query.value("android_id").toString(); wc.ip = query.value("ip").toString(); wc.port = query.value("port").toInt(); wc.updatedAt = query.value("updated_at").toString(); return wc; } } // namespace bool WifiConnectionDAO::upsert(const QString &androidId, const QString &ip, int port) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare(R"( INSERT INTO wifi_connections (android_id, ip, port, updated_at) VALUES (:android_id, :ip, :port, :updated_at) ON CONFLICT(android_id) DO UPDATE SET ip = excluded.ip, port = excluded.port, updated_at = excluded.updated_at )"); query.bindValue(":android_id", androidId); query.bindValue(":ip", ip); query.bindValue(":port", port); query.bindValue(":updated_at", QDateTime::currentDateTimeUtc().toString(Qt::ISODate)); if (!query.exec()) { qWarning() << "WifiConnectionDAO::upsert error:" << query.lastError().text(); return false; } return true; } bool WifiConnectionDAO::updateIp(const QString &androidId, const QString &ip) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare(R"( UPDATE wifi_connections SET ip = :ip, updated_at = :updated_at WHERE android_id = :android_id )"); query.bindValue(":ip", ip); query.bindValue(":updated_at", QDateTime::currentDateTimeUtc().toString(Qt::ISODate)); query.bindValue(":android_id", androidId); if (!query.exec()) { qWarning() << "WifiConnectionDAO::updateIp error:" << query.lastError().text(); return false; } return true; } WifiConnection WifiConnectionDAO::getByAndroidId(const QString &androidId) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare("SELECT * FROM wifi_connections WHERE android_id = :android_id LIMIT 1"); query.bindValue(":android_id", androidId); if (!query.exec()) { qWarning() << "WifiConnectionDAO::getByAndroidId error:" << query.lastError().text(); return {}; } if (query.next()) { return parseRow(query); } return {}; } QList WifiConnectionDAO::getAll() { QList result; QSqlQuery query(DatabaseManager::instance().database()); if (!query.exec("SELECT * FROM wifi_connections")) { qWarning() << "WifiConnectionDAO::getAll error:" << query.lastError().text(); return result; } while (query.next()) { result.append(parseRow(query)); } return result; } bool WifiConnectionDAO::remove(const QString &androidId) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare("DELETE FROM wifi_connections WHERE android_id = :android_id"); query.bindValue(":android_id", androidId); if (!query.exec()) { qWarning() << "WifiConnectionDAO::remove error:" << query.lastError().text(); return false; } return true; }