Add api for updating package info rw to roupdated 41/316041/2
authorIlho Kim <ilho159.kim@samsung.com>
Fri, 23 Aug 2024 12:23:40 +0000 (21:23 +0900)
committerIlho Kim <ilho159.kim@samsung.com>
Tue, 10 Dec 2024 04:11:34 +0000 (13:11 +0900)
Change-Id: Ic154b43e98a76d7ca87ba303669051c80119c930
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
parser/include/pkgmgr_parser_db.h
parser/include/pkgmgr_query_index.h
parser/src/pkgmgr_parser_db.c
src/server/database/query_handler.cc

index 1977f99931e0080dec4a218599380ef582ceb931..3c665557e6a5b1001daa0d4293c1eccc11bc2d44 100644 (file)
@@ -597,6 +597,19 @@ int pkgmgr_parser_update_pending_cache(const char *pkgid);
 int pkgmgr_parser_update_ro_to_rw_pkg_in_db(const char *pkgid);
 int pkgmgr_parser_update_ro_to_rw_pkg_in_usr_db(const char *pkgid, uid_t uid);
 
+/**
+ * @fn int pkgmgr_parser_update_rw_to_ro_update_pkg_in_db(const char *pkgid)
+ * @brief      This API updates package info that updated from RW package to RO to RW updated package
+ *
+ * @par                This API is only for internal usage
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  pkgid   package ID
+ * @return     0 if success, error code(<0) if fail
+ */
+int pkgmgr_parser_update_rw_to_ro_updated_pkg_in_db(const char *pkgid);
+int pkgmgr_parser_update_rw_to_ro_updated_pkg_in_usr_db(const char *pkgid, uid_t uid);
+
 /** @} */
 #ifdef __cplusplus
 }
index 8f036bb6880cae1f07f6c717e1be673cb2d7b042..2678783686f6ae58910f8473c545e5cb6c1c8250 100644 (file)
@@ -48,6 +48,7 @@ typedef enum {
        QUERY_INDEX_UNREGISTER_PKG_UPDATE_INFO,
        QUERY_INDEX_UNREGISTER_ALL_PKG_UPDATE_INFO,
        QUERY_INDEX_UPDATE_RO_TO_RW_PACKAGE_INFO,
+       QUERY_INDEX_UPDATE_RW_TO_RO_UPDATED_PACKAGE_INFO,
        QUERY_INDEX_MAX
 } QUERY_INDEX;
 
index f7799074f4a912b6d4bbe17ab8a8fbe974bbefae..b769030d27b55afc333dbf41b497c3f528435853 100644 (file)
@@ -659,3 +659,22 @@ API int pkgmgr_parser_update_ro_to_rw_pkg_in_db(const char *pkgid)
 {
        return pkgmgr_parser_update_ro_to_rw_pkg_in_usr_db(pkgid, __getuid());
 }
+
+API int pkgmgr_parser_update_rw_to_ro_updated_pkg_in_usr_db(
+               const char *pkgid, uid_t uid)
+{
+       const char *args[1] = { pkgid };
+       if (_parser_execute_write_query(
+                       QUERY_INDEX_UPDATE_RW_TO_RO_UPDATED_PACKAGE_INFO,
+                       args, 1, uid) < 0) {
+               _LOGE("Fail to write to db");
+               return PM_PARSER_R_ERROR;
+       }
+
+       return PM_PARSER_R_OK;
+}
+
+API int pkgmgr_parser_update_rw_to_ro_updated_pkg_in_db(const char *pkgid)
+{
+       return pkgmgr_parser_update_rw_to_ro_updated_pkg_in_usr_db(pkgid, __getuid());
+}
index e74415bbf9085e81c3b19b3003c06af4b795c6c9..22481682458043cf8b707c693a7a8b56c203db9a 100644 (file)
@@ -151,6 +151,11 @@ constexpr char query_update_RO_to_RW_package_info[] =
     "SET package_preload='false', package_system='false', package_update='false' "
     "WHERE package=?";
 
+constexpr char query_update_RW_to_RO_updated_package_info[] =
+    "UPDATE package_info "
+    "SET package_preload='true', package_system='true', package_update='true' "
+    "WHERE package=?";
+
 class QueryMaker {
  public:
   using CacheChangeFlag = pkgmgr_server::database::CacheChangeFlag;
@@ -184,6 +189,7 @@ class QueryMaker {
     { query_unregister_pkg_update_info, CacheChangeFlag::NONE, 0 },
     { query_unregister_all_pkg_update_info, CacheChangeFlag::NONE, 0 },
     { query_update_RO_to_RW_package_info, CacheChangeFlag::PKG, 0 },
+    { query_update_RW_to_RO_updated_package_info, CacheChangeFlag::PKG, 0 },
   };
 
   const std::tuple<const char*, CacheChangeFlag, int>& GetQueryInfo(int index) {