#include "device_dao.h" #include #include #include #include #include "../database_manager.h" bool DeviceDAO::upsertDevice(const DeviceInfo& device) { QSqlQuery query(DatabaseManager::instance().database()); // Проверка: существует ли запись query.prepare("SELECT COUNT(*) FROM devices WHERE id = :id"); query.bindValue(":id", device.id); if (!query.exec() || !query.next()) { qWarning() << "Ошибка при проверке существования записи:" << query.lastError().text(); return false; } bool exists = query.value(0).toInt() > 0; if (exists) { // Обновление query.prepare(R"( UPDATE devices SET status = :status, name = :name, android = :android, screen_width = :width, screen_height = :height, battery = :battery, updateTime = :updateTime WHERE id = :id )"); } else { // Вставка query.prepare(R"( INSERT INTO devices ( id, status, name, android, screen_width, screen_height, battery, updateTime ) VALUES ( :id, :status, :name, :android, :width, :height, :battery, :updateTime ) )"); } query.bindValue(":id", device.id); query.bindValue(":status", device.status); query.bindValue(":name", device.name); query.bindValue(":android", device.android); query.bindValue(":width", device.screenWidth); query.bindValue(":height", device.screenHeight); query.bindValue(":battery", device.battery); query.bindValue(":updateTime", device.updateTime.toString(Qt::ISODate)); if (!query.exec()) { qWarning() << "Ошибка при вставке/обновлении устройства:" << query.lastError().text(); return false; } return true; } bool DeviceDAO::updateImage(const QString& deviceId, const QByteArray& imageData) { QSqlQuery query(DatabaseManager::instance().database()); query.prepare("UPDATE devices SET image = :image WHERE id = :id"); query.bindValue(":image", imageData); query.bindValue(":id", deviceId); if (!query.exec()) { qWarning() << "Ошибка при обновлении изображения:" << query.lastError().text(); return false; } return true; }