From 089a6ea98502ee5f897e6e76c40bd3a42a451bca Mon Sep 17 00:00:00 2001 From: Kyuho Jo Date: Mon, 18 Jan 2016 20:34:51 +0900 Subject: [PATCH] Patch for selecting limited records of messages Signed-off-by: Kyuho Jo --- TelegramTizen/db_manager/tg_db_manager.c | 9 +++++-- TelegramTizen/db_manager/tg_db_manager.h | 2 +- TelegramTizen/src/tg_db_wrapper.c | 42 ++++++++++++++++---------------- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/TelegramTizen/db_manager/tg_db_manager.c b/TelegramTizen/db_manager/tg_db_manager.c index 4669e4e..a844746 100644 --- a/TelegramTizen/db_manager/tg_db_manager.c +++ b/TelegramTizen/db_manager/tg_db_manager.c @@ -520,7 +520,7 @@ Eina_List* get_values_from_table_sync_order_by(const char* table_name, Eina_List } -Eina_List* get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* wc) +Eina_List* get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* wc, int limit, int offset) { sqlite3_stmt *stmt; const char *name; @@ -575,7 +575,12 @@ Eina_List* get_values_from_table_sync(const char* table_name, Eina_List* column_ ptr++; } - ptr += sprintf(ptr, " FROM %s %s;", table_name, where_clause ? where_clause : ""); + if (limit == -1 || offset == -1) { + ptr += sprintf(ptr, " FROM %s %s;", table_name, where_clause ? where_clause : ""); + } else { + ptr += sprintf(ptr, " FROM %s %s LIMIT %d OFFSET %d;", table_name, where_clause ? where_clause : "", limit, offset); + } + LOGD("Query: %s", query); diff --git a/TelegramTizen/db_manager/tg_db_manager.h b/TelegramTizen/db_manager/tg_db_manager.h index 7afb252..d397ddb 100644 --- a/TelegramTizen/db_manager/tg_db_manager.h +++ b/TelegramTizen/db_manager/tg_db_manager.h @@ -16,7 +16,7 @@ extern Eina_Bool create_table(const char* table_name, Eina_List* column_names, E extern Eina_Bool insert_table(const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values); extern Eina_Bool update_table(const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values, const char* where_clause); extern Eina_Bool get_values_from_table(const char* table_name, Eina_List* column_names, int (*callback)(void*,int,char**,char**), const char* where_clause, void* data_to_callback); -extern Eina_List* get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* where_clause); +extern Eina_List* get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* where_clause, int limit, int offset); extern Eina_List* get_values_from_table_sync_order_by(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* order_column, Eina_Bool is_asc, const char* where_clause); extern int get_number_of_rows(char* table_name, char* where_clause); extern Eina_List *tg_db_get_user_info(tgl_peer_id_t *user_id); diff --git a/TelegramTizen/src/tg_db_wrapper.c b/TelegramTizen/src/tg_db_wrapper.c index 27827b3..2942b3d 100644 --- a/TelegramTizen/src/tg_db_wrapper.c +++ b/TelegramTizen/src/tg_db_wrapper.c @@ -549,7 +549,7 @@ Eina_List* get_all_peer_details(char* start_name) col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); - //peer_details = get_values_from_table_sync(db, table_name, col_names, col_types, NULL); + //peer_details = get_values_from_table_sync(db, table_name, col_names, col_types, NULL, -1, -1); char *where_clause = NULL; if (start_name) { where_clause = (char *)malloc(strlen(PEER_INFO_TABLE_PRINT_NAME) + strlen(" LIKE '") + strlen(start_name) + strlen("%'") + 1); @@ -758,7 +758,7 @@ Eina_List* get_group_chat_details() col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); - chat_details = get_values_from_table_sync(table_name, col_names, col_types, NULL); + chat_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, -1, -1); eina_list_free(col_names); eina_list_free(col_types); @@ -813,7 +813,7 @@ tg_chat_info_s* get_chat_info(int chat_id) strcat(where_clause, " = "); strcat(where_clause, chat_id_str); - chat_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + chat_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); eina_list_free(col_names); @@ -968,7 +968,7 @@ Eina_List* get_registered_user_info() col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER); - user_details = get_values_from_table_sync(table_name, col_names, col_types, NULL); + user_details = get_values_from_table_sync(table_name, col_names, col_types, NULL, -1, -1); eina_list_free(col_names); eina_list_free(col_types); @@ -1165,7 +1165,7 @@ char* get_chat_bg() strcpy(where_clause, TG_SETTINGS_ROW_ID); strcat(where_clause, " = "); strcat(where_clause, user_id_str); - settings_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + settings_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); if (settings_array && eina_list_count(settings_array) > 0) { Eina_List* settings_details = eina_list_nth(settings_array, 0); @@ -1209,7 +1209,7 @@ char* get_profile_pic_path(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); @@ -1256,7 +1256,7 @@ char* get_buddy_name_from_id(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); @@ -1303,7 +1303,7 @@ Eina_Bool is_phone_number_exists_in_buddy_list(const char *phone_num) strcat(where_clause, phone_num); strcat(where_clause, "%'"); - Eina_List* buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + Eina_List* buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); if (buddy_details_array && eina_list_count(buddy_details_array) > 0) { @@ -1347,7 +1347,7 @@ char* get_buddy_phone_num_from_id(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); if (buddy_details_array && eina_list_count(buddy_details_array) > 0) { @@ -1391,7 +1391,7 @@ int get_buddy_block_status(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); int is_unknown = 0; @@ -1436,7 +1436,7 @@ int get_buddy_delete_status(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); int is_unknown = 0; @@ -1481,7 +1481,7 @@ int get_buddy_unknown_status(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); int is_unknown = 0; @@ -1526,7 +1526,7 @@ int get_buddy_online_status(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + buddy_details_array = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); int is_online = -1; @@ -1602,7 +1602,7 @@ Eina_List* get_buddy_info(int buddy_id) strcat(where_clause, " = "); strcat(where_clause, buddy_id_str); - user_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + user_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); eina_list_free(col_names); @@ -2087,7 +2087,7 @@ tg_message_s* get_message_from_message_table(long long msg_id, char* table_name) strcat(where_clause, " = "); strcat(where_clause, msg_id_str); - message_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + message_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); free(where_clause); eina_list_free(col_names); @@ -2851,7 +2851,7 @@ int get_media_size_from_db(long long media_id) Eina_List* col_names = NULL; col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_SIZE); - Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); if (!vals) { //("DB error"); @@ -2895,7 +2895,7 @@ char* get_video_thumb_path_from_db(long long media_id) Eina_List* col_names = NULL; col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_THUMB_FILE); - Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); file_path = NULL; if (!vals) { @@ -2944,7 +2944,7 @@ char* get_media_path_from_db(long long media_id) Eina_List* col_names = NULL; col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH); - Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); file_path = NULL; if (!vals) { @@ -3012,7 +3012,7 @@ Eina_List* get_image_sizes_from_db(long long media_id) col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4); col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4); col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4); - vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); eina_list_free(col_types); eina_list_free(col_names); @@ -3168,7 +3168,7 @@ Eina_List* get_image_details_from_db(long long media_id) col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_DC); col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DOCUMENT_THUMB_FILE); - vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); eina_list_free(col_types); eina_list_free(col_names); @@ -4230,7 +4230,7 @@ void get_buddy_contact_details_from_db(int buddy_id, char **first_name, char **l col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME); col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO); - Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause); + Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause, -1, -1); file_path = NULL; if (!vals) { -- 2.7.4