36 lines
2.0 KiB
C++
36 lines
2.0 KiB
C++
#pragma once
|
||
|
||
#include <QString>
|
||
#include <QList>
|
||
|
||
// Реквизиты подключения устройства по Wi-Fi. Связь с устройством — по android_id
|
||
// (= devices.id), т.е. одна запись на физический аппарат, независимо от транспорта.
|
||
struct WifiConnection {
|
||
QString androidId; // = devices.id
|
||
QString ip; // последний известный IP телефона в Wi-Fi
|
||
int port = 0; // порт для adb connect
|
||
QString updatedAt; // ISO-время последнего обновления
|
||
};
|
||
|
||
// DAO таблицы wifi_connections. Задел под будущий авто-реконнект по Wi-Fi:
|
||
// хранит ip/port/code per-device, чтобы переподключать устройство без повторного
|
||
// поиска. В текущей итерации — только хранилище (воркер реконнекта отложен).
|
||
class WifiConnectionDAO {
|
||
public:
|
||
// Вставка/обновление по android_id (PRIMARY KEY). Pairing-код НЕ храним: он
|
||
// одноразовый и для реконнекта не нужен (pairing сохраняется на устройстве).
|
||
static bool upsert(const QString &androidId, const QString &ip, int port);
|
||
|
||
// Обновить ТОЛЬКО ip (и updated_at) существующей записи, не трогая port/code.
|
||
// Если записи нет — ничего не делает (порт/код задаёт онбординг, не фоновый IP-апдейт).
|
||
static bool updateIp(const QString &androidId, const QString &ip);
|
||
|
||
// Запись по android_id (пустой androidId в результате → не найдено).
|
||
[[nodiscard]] static WifiConnection getByAndroidId(const QString &androidId);
|
||
|
||
// Все сохранённые реквизиты.
|
||
[[nodiscard]] static QList<WifiConnection> getAll();
|
||
|
||
static bool remove(const QString &androidId);
|
||
};
|