[NewAPI][Querying for deleted account information] 21/208721/4
authorAbhishek Vijay <abhishek.v@samsung.com>
Thu, 27 Jun 2019 11:05:29 +0000 (16:35 +0530)
committerAbhishek Vijay <abhishek.v@samsung.com>
Mon, 23 Sep 2019 14:41:54 +0000 (20:11 +0530)
Change-Id: Ieb096a7e0fc57934c6b901f5d7ccc1a7b8cefa1b
Signed-off-by: Abhishek Vijay <abhishek.v@samsung.com>
server/include/account-server-db.h
server/src/account-server-db.c
server/src/account-server.c

index 04f1cd0..a7b6a5c 100644 (file)
@@ -31,11 +31,9 @@ GSList* _account_db_query_all(int pid, uid_t uid);
 GSList* _account_type_query_all(void);
 int _account_delete(int pid, uid_t uid, int account_id);
 int _account_delete_from_db_by_user_name(int pid, uid_t uid, const char *user_name, const char *package_name);
-//int _account_delete_from_db_by_package_name(int pid, uid_t uid, const char *package_name, gboolean permission);
-int account_server_empty_deleted_account_info_tables(const char* del_account_table, const char* del_capability_table, const char* del_account_custom_table);
 int _account_update_to_db_by_id(int pid, uid_t uid, account_s *account, int account_id);
 int _account_get_total_count_from_db(gboolean include_hidden, int *count);
-int _account_query_account_by_account_id(int pid, uid_t uid, int account_db_id, account_s *account_record, bool *IsDeletedAccount);
+int _account_query_account_by_account_id(int pid, uid_t uid, int account_db_id, account_s *account_record, bool query_del_acc);
 int _account_update_to_db_by_user_name(int pid, uid_t uid, account_s* account, const char *user_name, const char *package_name);
 int _account_type_query_label_by_locale(const char* app_id, const char* locale, char **label);
 GSList* _account_type_query_by_provider_feature(const char* key, int *error_code);
index 6783cba..05a2192 100644 (file)
@@ -1857,179 +1857,9 @@ CATCH:
        return error_code;
 }
 
-int account_server_empty_deleted_account_info_tables(const char* del_account_table, const char* del_capability_table,
-                                       const char* del_account_custom_table)
+int _account_query_account_by_account_id(int pid, uid_t uid, int account_db_id, account_s *account_record, bool query_del_acc)
 {
-       _INFO("account_server_empty_deleted_account_info_tables start");
-
-       account_stmt hstmt = NULL;
-       int error_code = _ACCOUNT_ERROR_NONE;
-       int rc = 0, record_count = 0;
-       char query[ACCOUNT_SQL_LEN_MAX] = {0, };
-
-       ACCOUNT_RETURN_VAL((g_hAccountDB != NULL), {}, _ACCOUNT_ERROR_DB_NOT_OPENED, ("The database isn't connected."));
-
-       rc = _account_begin_transaction(g_hAccountDB);
-       _INFO("after _account_begin_trasaction");
-
-       if (_account_db_err_code(g_hAccountDB) == SQLITE_PERM) {
-               ACCOUNT_ERROR("Access failed(%s)", _account_db_err_msg(g_hAccountDB));
-               return _ACCOUNT_ERROR_PERMISSION_DENIED;
-       }
-
-       if (rc == _ACCOUNT_ERROR_DATABASE_BUSY) {
-               ACCOUNT_ERROR("database busy(%s)", _account_db_err_msg(g_hAccountDB));
-               return _ACCOUNT_ERROR_DATABASE_BUSY;
-       } else if (rc != _ACCOUNT_ERROR_NONE) {
-               ACCOUNT_ERROR("account_delete:_account_begin_transaction fail %d\n", rc);
-               return rc;
-       }
-
-       /*del_account_table - check record count*/
-       ACCOUNT_SNPRINTF(query, sizeof(query), "select count(*) from %s", del_account_table);
-
-       record_count = _account_get_record_count(g_hAccountDB, query);
-       if (_account_db_err_code(g_hAccountDB) == SQLITE_PERM) {
-               ACCOUNT_ERROR("Access failed(%s)", _account_db_err_msg(g_hAccountDB));
-               return _ACCOUNT_ERROR_PERMISSION_DENIED;
-       }
-
-       _INFO("item count val - [%d] table - [%s]", record_count, del_account_table);
-
-       if (record_count > 0) {
-               /*clear deleted account table*/
-               ACCOUNT_MEMSET(query, 0, sizeof(query));
-               ACCOUNT_SNPRINTF(query, sizeof(query), "DELETE FROM %s", del_account_table);
-
-               _INFO("clearing deleted-account-table - query[%s]", query);
-
-               hstmt = _account_prepare_query(g_hAccountDB, query);
-               if ((_account_db_err_code(g_hAccountDB) == SQLITE_PERM)) {
-                       _account_end_transaction(g_hAccountDB, false);
-                       ACCOUNT_ERROR("Access failed(%s)", _account_db_err_msg(g_hAccountDB));
-                       return _ACCOUNT_ERROR_PERMISSION_DENIED;
-               }
-
-               if (hstmt == NULL) {
-                       _ERR("_account_svc_query_prepare(%s) failed(%s).\n", query, _account_db_err_msg(g_hAccountDB));
-                       error_code = _ACCOUNT_ERROR_DB_FAILED;
-                       goto END;
-               }
-
-               rc = _account_query_step(hstmt);
-               if (rc != SQLITE_DONE) {
-                       _ERR("The record isn't found");
-                       error_code = _ACCOUNT_ERROR_RECORD_NOT_FOUND;
-                       goto END;
-               }
-
-               rc = _account_query_finalize(hstmt);
-               if (rc != _ACCOUNT_ERROR_NONE) {
-                       _ERR("finalize error");
-                       error_code = rc;
-                       goto END;
-               }
-
-               record_count = 0;
-       }
-
-       /*del_capability_table - check record count*/
-       ACCOUNT_MEMSET(query, 0, sizeof(query));
-       ACCOUNT_SNPRINTF(query, sizeof(query), "select count(*) from %s", del_capability_table);
-
-       record_count = _account_get_record_count(g_hAccountDB, query);
-       if (_account_db_err_code(g_hAccountDB) == SQLITE_PERM) {
-               ACCOUNT_ERROR("Access failed(%s)", _account_db_err_msg(g_hAccountDB));
-               return _ACCOUNT_ERROR_PERMISSION_DENIED;
-       }
-
-       _INFO("item count val - [%d] table - [%s]", record_count, del_capability_table);
-
-       if (record_count > 0) {
-               /*clear deleted capability table*/
-               ACCOUNT_MEMSET(query, 0, sizeof(query));
-               ACCOUNT_SNPRINTF(query, sizeof(query), "DELETE FROM %s", del_capability_table);
-
-               _INFO("clearing deleted-capability-table - query[%s]", query);
-
-               hstmt = _account_prepare_query(g_hAccountDB, query);
-               if (hstmt == NULL) {
-                       _ERR("_account_svc_query_prepare(%s) failed(%s).\n", query, _account_db_err_msg(g_hAccountDB));
-                       error_code = _ACCOUNT_ERROR_DB_FAILED;
-                       goto END;
-               }
-
-               rc = _account_query_step(hstmt);
-               if (rc != SQLITE_DONE) {
-                       _ERR("The record isn't found");
-                       error_code = _ACCOUNT_ERROR_RECORD_NOT_FOUND;
-                       goto END;
-               }
-
-               rc = _account_query_finalize(hstmt);
-               if (rc != _ACCOUNT_ERROR_NONE) {
-                       _ERR("finalize error");
-                       error_code = rc;
-                       goto END;
-               }
-
-               record_count = 0;
-       }
-
-       /*del_account_custom_table - check record count*/
-       ACCOUNT_MEMSET(query, 0, sizeof(query));
-       ACCOUNT_SNPRINTF(query, sizeof(query), "select count(*) from %s", del_account_custom_table);
-
-       record_count = _account_get_record_count(g_hAccountDB, query);
-       if (_account_db_err_code(g_hAccountDB) == SQLITE_PERM) {
-               ACCOUNT_ERROR("Access failed(%s)", _account_db_err_msg(g_hAccountDB));
-               return _ACCOUNT_ERROR_PERMISSION_DENIED;
-       }
-
-       _INFO("item count val - [%d] table - [%s]", record_count, del_account_custom_table);
-
-       if (record_count > 0) {
-               /*clear deleted account_custom table*/
-               ACCOUNT_MEMSET(query, 0, sizeof(query));
-               ACCOUNT_SNPRINTF(query, sizeof(query), "DELETE FROM %s", del_account_custom_table);
-
-               _INFO("clearing deleted-account-custom-table - query[%s]", query);
-
-               hstmt = _account_prepare_query(g_hAccountDB, query);
-               if (hstmt == NULL) {
-                       _ERR("_account_svc_query_prepare(%s) failed(%s).\n", query, _account_db_err_msg(g_hAccountDB));
-                       error_code = _ACCOUNT_ERROR_DB_FAILED;
-                       goto END;
-               }
-
-               rc = _account_query_step(hstmt);
-               if (rc != SQLITE_DONE) {
-                       _ERR("The record isn't found");
-                       error_code = _ACCOUNT_ERROR_RECORD_NOT_FOUND;
-                       goto END;
-               }
-
-               rc = _account_query_finalize(hstmt);
-               if (rc != _ACCOUNT_ERROR_NONE) {
-                       _ERR("finalize error");
-                       error_code = rc;
-                       goto END;
-               }
-       }
-
-       rc = _account_end_transaction(g_hAccountDB, true);
-       if (rc != _ACCOUNT_ERROR_NONE)
-               _ERR("clear deleted account tables - fail [%d]", rc);
-
-       hstmt =  NULL;
-       _INFO("account_server_empty_deleted_account_info_tables end");
-END:
-       return error_code;
-}
-
-int _account_query_account_by_account_id(int pid, uid_t uid, int account_db_id, account_s *account_record, bool *IsDeletedAccount)
-{
-       _INFO("_account_query_account_by_account_id() start, account_db_id=[%d]", account_db_id);
+       _INFO("_account_query_account_by_account_id() start, account_db_id=[%d], query_del_acc=[%d]", account_db_id, query_del_acc);
 
        int error_code = _ACCOUNT_ERROR_NONE;
        account_stmt hstmt = NULL;
@@ -2044,7 +1874,10 @@ int _account_query_account_by_account_id(int pid, uid_t uid, int account_db_id,
 
        /* prepare query for account-table */
        ACCOUNT_MEMSET(query, 0x00, ACCOUNT_SQL_LEN_MAX);
-       ACCOUNT_SNPRINTF(query, sizeof(query), "SELECT * FROM %s WHERE _id = %d", ACCOUNT_TABLE, account_db_id);
+       if (!query_del_acc)
+               ACCOUNT_SNPRINTF(query, sizeof(query), "SELECT * FROM %s WHERE _id = %d", ACCOUNT_TABLE, account_db_id);
+       else
+               ACCOUNT_SNPRINTF(query, sizeof(query), "SELECT * FROM %s WHERE _id = %d", DELETED_ACCOUNT_TABLE, account_db_id);
 
        _INFO("after _account_prepare_query, rc=[%d]", rc);
 
@@ -2062,40 +1895,7 @@ int _account_query_account_by_account_id(int pid, uid_t uid, int account_db_id,
 
        ACCOUNT_DEBUG("after _account_query_step returned [%d]", rc);
 
-#ifndef ACCOUNT_QUERY_DELETED_ACCOUNT_INFORMATION
        ACCOUNT_CATCH_ERROR(rc == SQLITE_ROW, {}, _ACCOUNT_ERROR_RECORD_NOT_FOUND, ("The record isn't found.\n"));
-#else
-       /*querying information from deleted_account_table*/
-       if (rc != SQLITE_ROW) {
-
-               /*free previous hstmt*/
-               if (hstmt != NULL) {
-                       rc = _account_query_finalize(hstmt);
-                       ACCOUNT_RETURN_VAL((rc == _ACCOUNT_ERROR_NONE), {}, rc, ("finalize error"));
-                       hstmt = NULL;
-               }
-
-               ACCOUNT_DEBUG("checking account info in deleted_account_table");
-
-               /* query from deleted-account-info table */
-               ACCOUNT_MEMSET(query, 0x00, ACCOUNT_SQL_LEN_MAX);
-               ACCOUNT_SNPRINTF(query, sizeof(query), "SELECT * FROM %s WHERE _id = %d", DELETED_ACCOUNT_TABLE, account_db_id);
-
-               hstmt = _account_prepare_query(g_hAccountDB, query);
-
-               rc = _account_db_err_code(g_hAccountDB);
-               if (rc == SQLITE_PERM) {
-                       ACCOUNT_ERROR("Access failed(%s)", _account_db_err_msg(g_hAccountDB));
-                       return _ACCOUNT_ERROR_PERMISSION_DENIED;
-               }
-
-               rc = _account_query_step(hstmt);
-               ACCOUNT_CATCH_ERROR(rc == SQLITE_ROW, {}, _ACCOUNT_ERROR_RECORD_NOT_FOUND, ("The record isn't found.\n"));
-
-               ACCOUNT_DEBUG("getting account info from deleted_account_table");
-               *IsDeletedAccount = true;
-       }
-#endif
 
        while (rc == SQLITE_ROW) {
                ACCOUNT_DEBUG("before _account_convert_column_to_account");
@@ -2111,11 +1911,11 @@ int _account_query_account_by_account_id(int pid, uid_t uid, int account_db_id,
        ACCOUNT_RETURN_VAL((rc == _ACCOUNT_ERROR_NONE), {}, rc, ("finalize error"));
 
        ACCOUNT_DEBUG("before _account_query_capability_by_account_id");
-       _account_query_capability_by_account_id(g_hAccountDB, _account_add_capability_to_account_cb, account_record->id, (void*)account_record, *IsDeletedAccount);
+       _account_query_capability_by_account_id(g_hAccountDB, _account_add_capability_to_account_cb, account_record->id, (void*)account_record, query_del_acc);
        ACCOUNT_DEBUG("after _account_query_capability_by_account_id");
 
        ACCOUNT_DEBUG("before _account_query_custom_by_account_id");
-       _account_query_custom_by_account_id(g_hAccountDB, _account_add_custom_to_account_cb, account_record->id, (void*)account_record, *IsDeletedAccount);
+       _account_query_custom_by_account_id(g_hAccountDB, _account_add_custom_to_account_cb, account_record->id, (void*)account_record, query_del_acc);
        ACCOUNT_DEBUG("after _account_query_custom_by_account_id");
 
        hstmt = NULL;
index 5547a12..bf459f3 100644 (file)
@@ -705,10 +705,10 @@ RETURN:
 
 gboolean
 account_manager_account_delete_from_db_by_package_name(AccountManager *object,
-                                                                                                                        GDBusMethodInvocation *invocation,
-                                                                                                                        const gchar *package_name,
-                                                                                                                        gboolean permission,
-                                                                                                                        gint uid)
+                                                                GDBusMethodInvocation *invocation,
+                                                                const gchar *package_name,
+                                                                gboolean permission,
+                                                                gint uid)
 {
        _INFO("account_manager_account_delete_from_db_by_package_name start");
        lifecycle_method_call_active();
@@ -1185,14 +1185,13 @@ RETURN:
 
 gboolean
 account_manager_handle_account_query_account_by_account_id(AccountManager *object, GDBusMethodInvocation *invocation,
-                                                               gint account_db_id, gint uid)
+                                       gint account_db_id, gint uid, gboolean query_del_acc)
 {
-       _INFO("account_manager_handle_account_query_account_by_account_id start");
+       _INFO("account_manager_handle_account_query_account_by_account_id start - account_db_id[%d], query_del_acc[%d]");
        lifecycle_method_call_active();
 
        GVariant* account_variant = NULL;
        account_s* account_data = NULL;
-       bool IsDeletedAccount = false;
 
        guint pid = _get_client_pid(invocation);
 
@@ -1224,9 +1223,11 @@ account_manager_handle_account_query_account_by_account_id(AccountManager *objec
        }
 
        _INFO("before _account_query_account_by_account_id");
-       return_code = _account_query_account_by_account_id(pid, (uid_t)uid, account_db_id, account_data, &IsDeletedAccount);
+       return_code = _account_query_account_by_account_id(pid, (uid_t)uid, account_db_id, account_data, query_del_acc);
        _INFO("after _account_query_account_by_return_code=[%d]", return_code);
-       _INFO("user_name = %s, user_data_txt[0] = %s, user_data_int[1] = %d", account_data->user_name, account_data->user_data_txt[0], account_data->user_data_int[1]);
+
+       _INFO("user_name = %s, user_data_txt[0] = %s, user_data_int[1] = %d",
+               account_data->user_name, account_data->user_data_txt[0], account_data->user_data_int[1]);
 
        if (return_code == _ACCOUNT_ERROR_NONE)
                account_variant = marshal_account(account_data);
@@ -1246,15 +1247,6 @@ RETURN:
                account_manager_complete_account_query_account_by_account_id(object, invocation, account_variant);
        }
 
-       /*clear deleted account tables*/
-       if (1/*IsDeletedAccount*/) {
-               _INFO("clearing deleted account-info tables - account_tbl,capability_tbl,custom_tbl");
-               return_code = account_server_empty_deleted_account_info_tables(DEL_ACCOUNT_TBL, DEL_CAPABILITY_TBL, DEL_ACCOUNT_CUSTOM_TBL);
-
-               if (return_code != _ACCOUNT_ERROR_NONE)
-                       _ERR("failed to clear deleted account tables");
-       }
-
        return_code = _account_db_close();
        if (return_code != _ACCOUNT_ERROR_NONE) {
                ACCOUNT_DEBUG("_account_db_close() fail[%d]", return_code);