From: Ilho Kim Date: Mon, 12 Aug 2024 01:36:07 +0000 (+0900) Subject: Add api for updating package info ro to rw X-Git-Tag: accepted/tizen/unified/20240813.181628~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=42c473d37ed678a77e36c889c93b6937b56e33e5;p=platform%2Fcore%2Fappfw%2Fpkgmgr-info.git Add api for updating package info ro to rw Change-Id: Iad16dfd4d0b73afcfdefc6c139fedb6e128f3cd4 Signed-off-by: Ilho Kim --- diff --git a/parser/include/pkgmgr_parser_db.h b/parser/include/pkgmgr_parser_db.h index e9b9ca99..1977f999 100644 --- a/parser/include/pkgmgr_parser_db.h +++ b/parser/include/pkgmgr_parser_db.h @@ -584,6 +584,19 @@ int pkgmgr_parser_create_and_initialize_db(uid_t uid); int pkgmgr_parser_update_pending_cache(const char *pkgid); +/** + * @fn int pkgmgr_parser_update_ro_to_rw_pkg_in_db(const char *pkgid) + * @brief This API updates package info that updated from RO package to RW 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_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); + /** @} */ #ifdef __cplusplus } diff --git a/parser/include/pkgmgr_query_index.h b/parser/include/pkgmgr_query_index.h index 137bde60..8f036bb6 100644 --- a/parser/include/pkgmgr_query_index.h +++ b/parser/include/pkgmgr_query_index.h @@ -47,6 +47,7 @@ typedef enum { QUERY_INDEX_REGISTER_PKG_UPDATE_INFO, QUERY_INDEX_UNREGISTER_PKG_UPDATE_INFO, QUERY_INDEX_UNREGISTER_ALL_PKG_UPDATE_INFO, + QUERY_INDEX_UPDATE_RO_TO_RW_PACKAGE_INFO, QUERY_INDEX_MAX } QUERY_INDEX; diff --git a/parser/src/pkgmgr_parser_db.c b/parser/src/pkgmgr_parser_db.c index 1804803c..f7799074 100644 --- a/parser/src/pkgmgr_parser_db.c +++ b/parser/src/pkgmgr_parser_db.c @@ -641,3 +641,21 @@ API int pkgmgr_parser_update_pending_cache(const char *pkgid) { return _parser_update_pending_cache(pkgid); } + +API int pkgmgr_parser_update_ro_to_rw_pkg_in_usr_db( + const char *pkgid, uid_t uid) +{ + const char *args[1] = { pkgid }; + if (_parser_execute_write_query(QUERY_INDEX_UPDATE_RO_TO_RW_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_ro_to_rw_pkg_in_db(const char *pkgid) +{ + return pkgmgr_parser_update_ro_to_rw_pkg_in_usr_db(pkgid, __getuid()); +} diff --git a/src/server/database/query_handler.cc b/src/server/database/query_handler.cc index 13a0e08d..e74415bb 100644 --- a/src/server/database/query_handler.cc +++ b/src/server/database/query_handler.cc @@ -146,6 +146,11 @@ constexpr const char query_unregister_all_pkg_update_info[] = "UPDATE package_update_info " "SET update_type='none'"; +constexpr char query_update_RO_to_RW_package_info[] = + "UPDATE package_info " + "SET package_preload='false', package_system='false', package_update='false' " + "WHERE package=?"; + class QueryMaker { public: using CacheChangeFlag = pkgmgr_server::database::CacheChangeFlag; @@ -178,6 +183,7 @@ class QueryMaker { { query_register_pkg_update_info, CacheChangeFlag::NONE, 0 }, { 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 }, }; const std::tuple& GetQueryInfo(int index) {