#include <vector>
#include "db_handle_provider.hh"
+#include "utils/logging.hh"
#include "pkgmgrinfo_debug.h"
#include "pkgmgrinfo_internal.h"
#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 {
}
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();
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