Implement functions for pkg enable/disable 82/79682/4 accepted/tizen/common/20160719.171839 accepted/tizen/ivi/20160718.104409 accepted/tizen/mobile/20160718.104256 accepted/tizen/tv/20160718.104147 accepted/tizen/wearable/20160718.104314 submit/tizen/20160718.020809
authorJunghyun Yeon <jungh.yeon@samsung.com>
Tue, 12 Jul 2016 09:48:31 +0000 (18:48 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 18 Jul 2016 01:48:47 +0000 (18:48 -0700)
Related changes
[pkgmgr-tool] https://review.tizen.org/gerrit/78916
[slp-pkgmgr] https://review.tizen.org/gerrit/78917
[pkgmgr-server] https://review.tizen.org/gerrit/78918
[app-installers] https://review.tizen.org/gerrit/78919
[tpk-backend] https://review.tizen.org/gerrit/#/c/79070/

Change-Id: I70d8108c76e2062eed4c081fc35a35c105b47901
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
parser/pkgmgr_parser_db.c
parser/pkgmgr_parser_db.h

index 4863257..1d02cf9 100644 (file)
@@ -2248,6 +2248,34 @@ static int __enable_app(const char *appid)
        return ret;
 }
 
+static int __disable_pkg(const char *pkgid)
+{
+       int ret = -1;
+       char query[MAX_QUERY_LEN] = {'\0'};
+       sqlite3_snprintf(MAX_QUERY_LEN, query,
+                       "UPDATE package_info SET package_disable='true' WHERE package=%Q",
+                       pkgid);
+       ret = __exec_query(query);
+       if (ret == -1)
+               _LOGD("Update pkg disable info has failed\n");
+
+       return ret;
+}
+
+static int __enable_pkg(const char *pkgid)
+{
+       int ret = -1;
+       char query[MAX_QUERY_LEN] = {'\0'};
+       sqlite3_snprintf(MAX_QUERY_LEN, query,
+                       "UPDATE package_info SET package_disable='false' WHERE package=%Q",
+                       pkgid);
+       ret = __exec_query(query);
+       if (ret == -1)
+               _LOGD("Update pkg disable info has failed\n");
+
+       return ret;
+}
+
 static int __check_appinfo_for_uid_table(const char *appid, uid_t uid)
 {
        int ret = -1;
@@ -2986,6 +3014,56 @@ API int pkgmgr_parser_update_app_disable_info_in_db(const char *appid, int is_di
        return pkgmgr_parser_update_app_disable_info_in_usr_db(appid, _getuid(), is_disable);
 }
 
+API int pkgmgr_parser_update_pkg_disable_info_in_usr_db(const char *pkgid, uid_t uid, int is_disable)
+{
+       int ret = -1;
+
+       ret = pkgmgr_parser_check_and_create_db(uid);
+       if (ret == -1) {
+               _LOGD("Failed to open DB\n");
+               return ret;
+       }
+
+       /*Begin transaction*/
+       ret = sqlite3_exec(pkgmgr_parser_db, "BEGIN EXCLUSIVE", NULL, NULL, NULL);
+       if (ret != SQLITE_OK) {
+               _LOGD("Failed to begin transaction\n");
+               ret = -1;
+               goto err;
+       }
+
+       _LOGD("Transaction Begin\n");
+       if (is_disable)
+               ret = __disable_pkg(pkgid);
+       else
+               ret = __enable_pkg(pkgid);
+
+       if (ret == -1) {
+               _LOGD("__update_pkg_disable_condition_in_db failed. Rollback now\n");
+               sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+               goto err;
+       }
+
+       /*Commit transaction*/
+       ret = sqlite3_exec(pkgmgr_parser_db, "COMMIT", NULL, NULL, NULL);
+       if (ret != SQLITE_OK) {
+               _LOGD("Failed to commit transaction, Rollback now\n");
+               sqlite3_exec(pkgmgr_parser_db, "ROLLBACK", NULL, NULL, NULL);
+               ret = -1;
+               goto err;
+       }
+       _LOGD("Transaction Commit and End\n");
+
+err:
+       pkgmgr_parser_close_db();
+       return ret;
+}
+
+API int pkgmgr_parser_update_pkg_disable_info_in_db(const char *pkgid, int is_disable)
+{
+       return pkgmgr_parser_update_pkg_disable_info_in_usr_db(pkgid, _getuid(), is_disable);
+}
+
 API int pkgmgr_parser_update_app_disable_info_in_usr_db(const char *appid, uid_t uid, int is_disable)
 {
        int ret = -1;
index 03325eb..93fcc46 100644 (file)
@@ -213,6 +213,32 @@ int pkgmgr_parser_update_app_disable_info_in_db(const char *appid, int is_disabl
 int pkgmgr_parser_update_app_disable_info_in_usr_db(const char *appid, uid_t uid, int is_disable);
 
 /**
+ * @fn int pkgmgr_parser_update_pkg_disable_info_in_db(const char *pkgid, int is_disable);
+ * @brief      This API updates disable info about pkg
+ *
+ * @par                This API is for package-manager installer backends
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  pkgid   package ID to be enabled or disabled
+ * @param[in]  is_disable      determine enable or disable of app
+ * @return     0 if success, error code(<0) if fail
+ * @pre                None
+ * @post               None
+ * @code
+static int disable_pkg(const char *pkgid)
+{
+       int ret = 0;
+       ret = pkgmgr_parser_update_pkg_disable_info_in_db(pkgid, 1);
+       if (ret < 0)
+               return -1;
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgr_parser_update_pkg_disable_info_in_db(const char *pkgid, int is_disable);
+int pkgmgr_parser_update_pkg_disable_info_in_usr_db(const char *pkgid, uid_t uid, int is_disable);
+
+/**
  * @fn int pkgmgr_parser_update_global_app_splash_screen_display_info_in_usr_db(const char *appid, uid_t uid, int flag)
  * @brief      This API updates splash screen display info about global app for user specified by uid
  *