Refactor pkgmgr-info
[platform/core/appfw/pkgmgr-info.git] / src / server / database / create_db_handler.cc
index e776957..7ef265e 100644 (file)
@@ -19,6 +19,7 @@
 #include <vector>
 
 #include "db_handle_provider.hh"
+#include "utils/logging.hh"
 
 #include "pkgmgrinfo_debug.h"
 #include "pkgmgrinfo_internal.h"
@@ -30,8 +31,6 @@
 #define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
 #endif
 
-#define DB_VERSION_PATH SYSCONFDIR "/package-manager/pkg_db_version.txt"
-
 namespace pkgmgr_server {
 namespace database {
 
@@ -45,62 +44,21 @@ std::vector<std::vector<std::string>> CreateDBHandler::GetResult() {
 }
 
 int CreateDBHandler::Execute() {
-  std::unique_lock<std::shared_timed_mutex> u(lock_);
+  std::unique_lock<std::shared_mutex> u(lock_);
 
   if (CreateParserDB() < 0) {
-    LOGE("Failed to create parser db for uid [%d]", GetUID());
+    LOG(ERROR) << "Failed to create parser db for uid : " << GetUID();
     return PMINFO_R_ERROR;
   }
 
-  if (GetUID() == GLOBAL_USER || GetUID() == OWNER_ROOT) {
-    if (CreateCertDB() < 0) {
-      LOGE("Failed to create cert db for uid [%d]", GetUID());
-      return PMINFO_R_ERROR;
-    }
+  if (CreateCertDB() < 0) {
+    LOG(ERROR) << "Failed to create cert db";
+    return PMINFO_R_ERROR;
   }
 
   return PMINFO_R_OK;
 }
 
-int CreateDBHandler::SetDBVersion(sqlite3* conn) {
-  static const char query_raw[] = "PRAGMA user_version=%Q";
-  int ret;
-  FILE *fp = NULL;
-  char version[PKG_STRING_LEN_MAX] = { 0 };
-  char *query = NULL;
-
-  fp = fopen(DB_VERSION_PATH, "r");
-  if (fp == NULL) {
-    printf("Failed to open db version file %s\n", DB_VERSION_PATH);
-    printf("errno : %d\n", errno);
-    LOGE("Failed to open db version file");
-    return -1;
-  }
-
-  if (fgets(version, sizeof(version), fp) == NULL) {
-    LOGE("Failed to get version information");
-    fclose(fp);
-    return -1;
-  }
-  fclose(fp);
-
-  query = sqlite3_mprintf(query_raw, version);
-  if (!query) {
-    LOGE("Out of memory");
-    return -1;
-  }
-
-  ret = sqlite3_exec(conn, query, NULL, NULL, NULL);
-  if (ret != SQLITE_OK) {
-    LOGE("exec failed: %s", sqlite3_errmsg(conn));
-    sqlite3_free(query);
-    return -1;
-  }
-  sqlite3_free(query);
-
-  return 0;
-}
-
 int CreateDBHandler::CreateParserDB() {
   SetDBType(pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB);
   ClearDBHandle();
@@ -108,31 +66,22 @@ int CreateDBHandler::CreateParserDB() {
   if (!Connect())
     return PMINFO_R_ERROR;
 
-  std::vector<std::pair<sqlite3*, uid_t>> conn_list = GetConnection();
-  sqlite3* conn = conn_list.front().first;
-  uid_t uid = conn_list.front().second;
-
-  if (SetDBVersion(conn) < 0)
-    return PMINFO_R_ERROR;
-
-  return pkgmgr_parser_internal_initialize_db(conn, uid);
+  const auto& [db, uid] = GetConnection().front();
+  return internal::InitializeDb(db, uid);
 }
 
 int CreateDBHandler::CreateCertDB() {
+  if (GetUID() != GLOBAL_USER && GetUID() != OWNER_ROOT)
+    return PMINFO_R_OK;
+
   SetDBType(pkgmgr_common::DBType::DB_TYPE_FILE_CERTDB);
   ClearDBHandle();
 
   if (!Connect())
     return PMINFO_R_ERROR;
 
-  std::vector<std::pair<sqlite3*, uid_t>> conn_list = GetConnection();
-  sqlite3* conn = conn_list.front().first;
-  uid_t uid = conn_list.front().second;
-
-  if (SetDBVersion(conn) < 0)
-    return PMINFO_R_ERROR;
-
-  return pkgmgr_parser_internal_initialize_db(conn, uid);
+  const auto& [db, uid] = GetConnection().front();
+  return internal::InitializeDb(db, uid);
 }
 
 }  // namespace database