Fix coding rule for db handlers
[platform/core/appfw/pkgmgr-info.git] / src / common / database / pkg_set_db_handler.cc
index e950d1f..51667d4 100644 (file)
 
 #include "pkg_set_db_handler.hh"
 
+#include <vector>
+
+#include "db_handle_provider.hh"
+
+#include "pkgmgrinfo_debug.h"
+#include "pkgmgrinfo_internal.h"
+
 namespace pkgmgr_common {
-PkgSetDBHandler::PkgSetDBHandler(uid_t uid)
-    : AbstractDBHandler(uid), uid_(uid) {}
+namespace database {
+
+PkgSetDBHandler::PkgSetDBHandler(uid_t uid, int pid)
+    : AbstractDBHandler(uid, pid), uid_(uid) {}
 
 PkgSetDBHandler::~PkgSetDBHandler() {}
 
-void PkgSetDBHandler::SetPkgInfo(package_x* package) { package_ = package; }
-void PkgSetDBHandler::SetPkgID(std::string pkgid) { pkgid = std::move(pkgid); }
+void PkgSetDBHandler::SetPkgInfo(package_x* package) {
+  package_ = package;
+}
+
+void PkgSetDBHandler::SetPkgID(std::string pkgid) {
+  pkgid = std::move(pkgid);
+}
+
+void PkgSetDBHandler::SetWriteType(WriteType write_type) {
+  write_type_ = write_type;
+}
+
+std::vector<std::vector<std::string>> PkgSetDBHandler::GetResult() {
+  return std::move(result_);
+}
 
-bool PkgSetDBHandler::Execute() {
+int PkgSetDBHandler::Execute() {
   SetOpType(OPERATION_TYPE_WRITE);
-  SetDBType(DB_TYPE_FILE_CERTDB);
-  return true;
+  SetDBType(DB_TYPE_FILE_PKGDB);
+
+  if (!Connect())
+    return PMINFO_R_ERROR;
+
+  int ret = 0;
+
+  DBHandleProvider::GetInst(uid_).SetMemoryMode(GetPID(), true);
+  std::vector<std::pair<sqlite3*, uid_t>> conn_list = GetConnection();
+  sqlite3* conn = conn_list.front().first;
+  if (write_type_ == Insert)
+    ret = pkgmgr_parser_insert_pkg_info(conn, package_, uid_);
+  else if (write_type_ == Update)
+    ret = pkgmgr_parser_update_pkg_info(conn, package_, uid_);
+  else if (write_type_ == Delete)
+    ret = pkgmgr_parser_delete_pkg_info(conn, package_->package, uid_);
+  else
+    _LOGE("Unknown db write type");
+
+  if (ret != PM_PARSER_R_OK)
+    return ret;
+
+  return ret;
 }
 
+}  // namespace database
 }  // namespace pkgmgr_common