Move codes related to database to DBManager
authorInkyun Kil <inkyun.kil@samsung.com>
Fri, 31 Aug 2018 00:15:00 +0000 (09:15 +0900)
committer길인균/Tizen Platform Lab(SR)/Engineer/삼성전자 <inkyun.kil@samsung.com>
Wed, 12 Sep 2018 05:45:14 +0000 (14:45 +0900)
Change-Id: I751ad92ae30143f7f5ed9da9a820e57b425d6a30
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
src/common/db_manager.cc
src/common/db_manager.h
src/common/mdg_manager.cc

index b5f147eb7e39a0fb5bf74ee205d7da52fb5af5ab..65996af4f514129cdf4e34d8e35b2358a009c4f2 100644 (file)
@@ -55,6 +55,9 @@ const char kQueryInsertDev[] =
     "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 (?, ?, ?, ?, ?, ?)";
@@ -121,6 +124,33 @@ bool DBManager::DeleteDevice(const RemoteDevice& device) {
   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();
index 1e4d99177d9ffcbc5b3e387f76c6829bfb6cd61c..b9b2ba5412a179575f91faba975384b963e558bb 100644 (file)
@@ -22,6 +22,7 @@ class DBManager {
  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,
index d3f93fe83acb5bde7fd75d0fc6834cc4ac2b6991..7c57bbc4910f01b528a501d55274bf1962a692bb 100644 (file)
 #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"
 
@@ -450,28 +448,19 @@ void MDGManager::HandlePackageEvent(const std::string& pkgid,
     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: