"VALUES (?, ?, ?, ?, ?, ?)";
const char kQueryDeleteDev[] =
"DELETE FROM devices WHERE device_id=?";
+const char kQuerySelectDev[] =
+ "SELECT device_id, model_name, device_name, platform_ver,"
+ " profile, sw_ver FROM devices";
const char kQueryInsertCap[] =
"INSERT INTO capabilities (device_id, operation, uri, mime, appid, pkgid) "
"VALUES (?, ?, ?, ?, ?, ?)";
return true;
}
+std::vector<RemoteDevice> DBManager::SelectDevice() {
+ auto guard = Instance().sql_conn_->GetTransactionGuard();
+ std::shared_ptr<SQLStatement> stmt = Instance().sql_conn_->PrepareStatement(
+ kQuerySelectDev);
+ if (!stmt) {
+ LOG(ERROR) << "Failed to prepare statement";
+ return {};
+ }
+
+ std::vector<RemoteDevice> dev_list;
+ while (stmt && stmt->Step() == SQLStatement::StepResult::ROW) {
+ int idx = 0;
+ std::string device_id = stmt->GetColumnString(idx++);
+ std::string model_name = stmt->GetColumnString(idx++);
+ std::string device_name = stmt->GetColumnString(idx++);
+ std::string platform_ver = stmt->GetColumnString(idx++);
+ std::string profile = stmt->GetColumnString(idx++);
+ std::string sw_ver = stmt->GetColumnString(idx++);
+
+ RemoteDevice dev(device_id, model_name, device_name, platform_ver,
+ profile, sw_ver);
+ dev_list.push_back(dev);
+ }
+
+ return dev_list;
+}
+
bool DBManager::InsertCapability(const std::string& device_id,
const Capability& cap) {
auto guard = Instance().sql_conn_->GetTransactionGuard();
public:
static bool InsertDevice(const RemoteDevice& device);
static bool DeleteDevice(const RemoteDevice& device);
+ static std::vector<RemoteDevice> SelectDevice();
static bool InsertCapability(const std::string& device_id,
const Capability& cap);
static bool InsertCapabilities(const std::string& device_id,
#include "common/appcontrol_manager.h"
#include "common/capability.h"
#include "common/capability_manager.h"
+#include "common/db_manager.h"
#include "common/dbus_service.h"
#include "common/package_manager.h"
#include "common/remote_device_manager.h"
-#include "common/sql_connection.h"
-#include "common/sql_statement.h"
-#include "common/sqlite_connection.h"
#include "common/utils/glist_range.h"
#include "common/utils/logging.h"
delete info;
}
- const char kDBPath[] = "/run/capmgr/capmgr.db";
- std::unique_ptr<SQLConnection> sql_conn(
- new SQLiteConnection(kDBPath, true));
-
- const char kQueryForeachDevices[] =
- "SELECT device_id FROM devices";
- std::shared_ptr<SQLStatement> stmt = sql_conn->PrepareStatement(
- kQueryForeachDevices);
- while (stmt && stmt->Step() == SQLStatement::StepResult::ROW) {
- std::string device_id = stmt->GetColumnString(0);
-
+ std::vector<RemoteDevice> dev_list = DBManager::SelectDevice();
+ for (auto& dev : dev_list) {
switch (event_type) {
case PackageEventListener::EventType::INSTALL:
- SendData(device_id.c_str(), Command::ADD_PACKAGEINFO,
+ SendData(dev.device_id().c_str(), Command::ADD_PACKAGEINFO,
package_data, packed.size());
break;
case PackageEventListener::EventType::UPDATE:
- SendData(device_id.c_str(), Command::UPDATE_PACKAGEINFO,
+ SendData(dev.device_id().c_str(), Command::UPDATE_PACKAGEINFO,
package_data, packed.size());
break;
case PackageEventListener::EventType::UNINSTALL:
- SendData(device_id.c_str(), Command::REMOVE_PACKAGEINFO,
+ SendData(dev.device_id().c_str(), Command::REMOVE_PACKAGEINFO,
package_data, pkgid.size());
break;
default: