#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