#include "remove_cache_db_handler.hh"
+#include "cache_flag.hh"
#include "db_handle_provider.hh"
namespace pkgmgr_server {
namespace database {
RemoveCacheDBHandler::RemoveCacheDBHandler(uid_t uid, int pid)
- : AbstractDBHandler(uid, pid) {}
+ : AbstractDBHandler(uid, pid), uid_(uid) {}
int RemoveCacheDBHandler::Execute() {
- std::unique_lock<std::shared_timed_mutex> u(lock_);
+ std::unique_lock<std::shared_mutex> u(lock_);
+ SetOpType(pkgmgr_common::DBOperationType::OPERATION_TYPE_READ);
+ SetDBType(pkgmgr_common::DBType::DB_TYPE_FILE_PKGDB);
database::DBHandleProvider::GetInst(GetUID()).UnsetMemoryMode(GetPID());
- database::DBHandleProvider::GetInst(GetUID()).TrimCache();
+
+ if (!Connect()) {
+ database::DBHandleProvider::GetInst(GetUID()).TrimCache();
+ return PMINFO_R_ERROR;
+ }
+
+ const auto& conn_list = GetConnection();
+ auto lock = CacheFlag::GetWriterLock();
+ if (CacheFlag::GetStatus() != CacheFlag::Status::PREPARED)
+ return PMINFO_R_OK;
+
+ CacheFlag::SetStatus(CacheFlag::Status::PREPARING);
+ for (const auto& [db, uid] : conn_list) {
+ auto& provider = database::DBHandleProvider::GetInst(uid);
+ provider.UpdatePendingPackageInfo(db, GetPID(), uid_, GetLocale());
+ }
+
+ CacheFlag::SetStatus(CacheFlag::Status::PREPARED);
return PMINFO_R_OK;
}