Update tg-engine DB manager 49/47949/1
authorSung-jae Park <nicesj.park@samsung.com>
Thu, 10 Sep 2015 08:09:16 +0000 (17:09 +0900)
committerSung-jae Park <nicesj.park@samsung.com>
Thu, 10 Sep 2015 08:09:16 +0000 (17:09 +0900)
Open A DB only once.
When the process is launched.

Close it when the process is terminated.

Change-Id: I5141693673d1adc26d0a0bd6aca12c0f6c397ab9

tg-engine-service/db_manager/tg_db_manager.c
tg-engine-service/db_manager/tg_db_manager.h
tg-engine-service/src/tg-engine-service.c
tg-engine-service/src/tg_db_wrapper.c
tg-engine-service/tg_engine/tg_engine.h

index 7c3b2d7..2941354 100644 (file)
@@ -4,13 +4,53 @@
  * @author sandeep
  */
 
-#include "tg_db_manager.h"
+#include <malloc.h>
+#include <errno.h>
 #include <string.h>
+#include "tg_db_manager.h"
+#include "tg_common.h"
+
+int errno;
+
+static struct _info {
+       sqlite3 *db;
+       const char *database_name;
+} s_info = {
+       .db = NULL,
+       .database_name = DEFAULT_TG_DATABASE_PATH,
+};
+
+int tg_db_init(void)
+{
+       int ret;
+
+       if (s_info.db) {
+               return EINA_TRUE;
+       }
+
+       ret = sqlite3_open(s_info.database_name, &s_info.db);
+       if(ret != SQLITE_OK) {
+               return EINA_FALSE;
+       }
 
+       return EINA_TRUE;
+
+}
 
-Eina_Bool create_table(sqlite3* db, const char* table_name, Eina_List* column_names, Eina_List* column_types)
+int tg_db_fini(void)
 {
-       if(!db || !table_name || ! column_names || !column_types) {
+       if (!s_info.db) {
+               return EINA_FALSE;
+       }
+
+       sqlite3_close(s_info.db);
+       s_info.db = NULL;
+       return EINA_TRUE;
+}
+
+Eina_Bool create_table(const char* table_name, Eina_List* column_names, Eina_List* column_types)
+{
+       if(!s_info.db || !table_name || ! column_names || !column_types) {
                return EINA_FALSE;
        }
 
@@ -42,7 +82,7 @@ Eina_Bool create_table(sqlite3* db, const char* table_name, Eina_List* column_na
                }
        }
 
-       ret = sqlite3_exec(db,var_query, NULL,(void*)db, &err_msg);
+       ret = sqlite3_exec(s_info.db,var_query, NULL,(void*)s_info.db, &err_msg);
        if( ret != SQLITE_OK ){
                sqlite3_free(err_msg);
                return EINA_FALSE;
@@ -50,9 +90,9 @@ Eina_Bool create_table(sqlite3* db, const char* table_name, Eina_List* column_na
        return EINA_TRUE;
 }
 
-Eina_Bool insert_table(sqlite3* db, const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values)
+Eina_Bool insert_table(const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values)
 {
-       if(!db || !table_name || ! column_names || !column_types || !column_values) {
+       if(!s_info.db || !table_name || ! column_names || !column_types || !column_values) {
                return EINA_FALSE;
        }
 
@@ -129,7 +169,7 @@ Eina_Bool insert_table(sqlite3* db, const char* table_name, Eina_List* column_na
                free(col_value);
        }
 
-       ret = sqlite3_exec(db,var_query, NULL,(void*)db, &err_msg);
+       ret = sqlite3_exec(s_info.db,var_query, NULL,(void*)s_info.db, &err_msg);
        if( ret != SQLITE_OK ){
                sqlite3_free(err_msg);
                return EINA_FALSE;
@@ -139,9 +179,9 @@ Eina_Bool insert_table(sqlite3* db, const char* table_name, Eina_List* column_na
 }
 
 
-Eina_Bool update_table(sqlite3* db, const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values, const char* where_clause)
+Eina_Bool update_table(const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values, const char* where_clause)
 {
-       if(!db || !table_name || ! column_names || !column_types || !column_values) {
+       if(!s_info.db || !table_name || ! column_names || !column_types || !column_values) {
                return EINA_FALSE;
        }
 
@@ -208,7 +248,7 @@ Eina_Bool update_table(sqlite3* db, const char* table_name, Eina_List* column_na
        strcat(var_query, where_clause);
        strcat(var_query, ";");
 
-       ret = sqlite3_exec(db,var_query, NULL,(void*)db, &err_msg);
+       ret = sqlite3_exec(s_info.db,var_query, NULL,(void*)s_info.db, &err_msg);
        if( ret != SQLITE_OK ){
                sqlite3_free(err_msg);
                return EINA_FALSE;
@@ -217,9 +257,9 @@ Eina_Bool update_table(sqlite3* db, const char* table_name, Eina_List* column_na
 
 }
 
-Eina_Bool get_values_from_table(sqlite3* db, const char* table_name, Eina_List* column_names, int (*callback)(void*,int,char**,char**), const char* where_clause, void* data_to_callback)
+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)
 {
-       if (!db || !table_name) {
+       if (!s_info.db || !table_name) {
                return EINA_FALSE;
        }
 
@@ -231,10 +271,10 @@ Eina_Bool get_values_from_table(sqlite3* db, const char* table_name, Eina_List*
        strcat(row_cnt_qry, ";");
 
        int no_of_rows = 0;
-       //ret = sqlite3_exec(db,var_query, callback,(void*)db, &err_msg);
+       //ret = sqlite3_exec(s_info.db,var_query, callback,(void*)s_info.db, &err_msg);
 
        sqlite3_stmt *stmt;
-       if (sqlite3_prepare_v2(db, row_cnt_qry, -1, &stmt, NULL) == SQLITE_OK) {
+       if (sqlite3_prepare_v2(s_info.db, row_cnt_qry, -1, &stmt, NULL) == SQLITE_OK) {
                if (sqlite3_step(stmt) == SQLITE_ERROR) {
                        no_of_rows = 0;
                } else {
@@ -298,7 +338,7 @@ Eina_Bool get_values_from_table(sqlite3* db, const char* table_name, Eina_List*
        strcat(var_query, ";");
 
 
-       ret = sqlite3_exec(db,var_query, callback,(void*)data_to_callback, &err_msg);
+       ret = sqlite3_exec(s_info.db,var_query, callback,(void*)data_to_callback, &err_msg);
        if( ret != SQLITE_OK ){
                sqlite3_free(err_msg);
                return EINA_FALSE;
@@ -308,26 +348,26 @@ Eina_Bool get_values_from_table(sqlite3* db, const char* table_name, Eina_List*
        return EINA_TRUE;
 }
 
-Eina_List *get_values_from_table_sync(sqlite3* db, const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* where_clause)
+Eina_List *get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* where_clause)
 {
        Eina_List* query_vals = NULL;
 
-       if (!db || !table_name) {
+       if (!s_info.db || !table_name) {
                return (Eina_List *)NULL;
        }
 
        /*****No rows identification*****/
 
-       char* row_cnt_qry = (char*)malloc(strlen("SELECT COUNT(*) FROM ") + strlen(table_name) + strlen(";") +1);
+       char* row_cnt_qry = (char *)malloc(strlen("SELECT COUNT(*) FROM ") + strlen(table_name) + strlen(";") +1);
        strcpy(row_cnt_qry, "SELECT COUNT(*) FROM ");
        strcat(row_cnt_qry, table_name);
        strcat(row_cnt_qry, ";");
 
        int no_of_rows = 0;
-       //ret = sqlite3_exec(db,var_query, callback,(void*)db, &err_msg);
+       //ret = sqlite3_exec(s_info.db,var_query, callback,(void*)s_info.db, &err_msg);
 
        sqlite3_stmt *stmt;
-       if (sqlite3_prepare_v2(db, row_cnt_qry, -1, &stmt, NULL) == SQLITE_OK) {
+       if (sqlite3_prepare_v2(s_info.db, row_cnt_qry, -1, &stmt, NULL) == SQLITE_OK) {
                if (sqlite3_step(stmt) == SQLITE_ERROR) {
                        no_of_rows = 0;
                } else {
@@ -391,7 +431,7 @@ Eina_List *get_values_from_table_sync(sqlite3* db, const char* table_name, Eina_
        strcat(var_query, ";");
 
 
-       ret = sqlite3_prepare_v2(db, var_query, -1, &stmt, 0);
+       ret = sqlite3_prepare_v2(s_info.db, var_query, -1, &stmt, 0);
        if( ret != SQLITE_OK ){
                sqlite3_free(err_msg);
                return NULL;
@@ -403,13 +443,22 @@ Eina_List *get_values_from_table_sync(sqlite3* db, const char* table_name, Eina_
                for(int col = 0; col < col_val_count ; col++) {
                        char* col_type = eina_list_nth(column_types, col);
                        if(!strcmp(col_type, "INTEGER") || !strcmp(col_type, "INTEGER PRIMARY KEY NOT NULL")) {
-                               int temp = sqlite3_column_int64(stmt, col);
-                               int* val_int = (int*)malloc(sizeof(int));
+                               long long temp = sqlite3_column_int64(stmt, col);
+                               int* val_int = (int *)malloc(sizeof(int));
                                *val_int = temp;
                                row_vals = eina_list_append(row_vals, val_int);
                        } else if(!strcmp(col_type, "TEXT") || !strcmp(col_type, "TEXT PRIMARY KEY NOT NULL")) {
-                               char* val_text = strdup(sqlite3_column_text(stmt, col));
-                               row_vals = eina_list_append(row_vals, val_text);
+                               const char *text = (const char *)sqlite3_column_text(stmt, col);
+                               char *val_text;
+
+                               val_text = strdup(text);
+                               if (!val_text) {
+                                       /**
+                                        * Handling me.
+                                        */
+                               } else {
+                                       row_vals = eina_list_append(row_vals, val_text);
+                               }
                        }
                }
                query_vals = eina_list_append(query_vals, row_vals);
index 6d3668e..30ddf01 100644 (file)
 #include "tg_common.h"
 #include <sqlite3.h>
 
-extern Eina_Bool create_table(sqlite3* db, const char* table_name, Eina_List* column_names, Eina_List* column_types);
-extern Eina_Bool insert_table(sqlite3* db, const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values);
-extern Eina_Bool update_table(sqlite3* db, 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(sqlite3* db, 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(sqlite3* db, const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* where_clause);
-extern Eina_Bool close_database(sqlite3* db);
+extern int tg_db_fini(void);
+extern int tg_db_init(void);
+extern Eina_Bool create_table(const char* table_name, Eina_List* column_names, Eina_List* column_types);
+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);
 
 #endif /* TG_DB_MANAGER_H_ */
index 7072355..c18493e 100644 (file)
@@ -268,6 +268,8 @@ bool service_app_create(void *data)
 {
        int result;
 
+       tg_db_init();
+
        tg_data->tg_state = TG_ENGINE_STATE_REGISTRATION;
        tg_data->phone_number = NULL;
        tg_data->first_name = NULL;
@@ -388,6 +390,8 @@ void service_app_terminate(void *data)
                free(tg_data);
                tg_data = NULL;
        }
+
+       tg_db_fini();
        return;
 }
 
index b57f2e7..e32dd86 100644 (file)
 
 void create_data_base_tables()
 {
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               char* table_name = USER_INFO_TABLE_NAME;
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               Eina_Bool ret = create_table(db, table_name, col_names, col_types);
-               if(!ret) {
-                       // error occured
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-
-               table_name = BUDDY_INFO_TABLE_NAME;
-               col_names = NULL;
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_ID);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PRINT_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_STRUCTURE_VERSION);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_FIRST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_LAST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ONLINE_STATUS);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_SEEN_TIME);
-
-               col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               ret = create_table(db, table_name, col_names, col_types);
-               if(!ret) {
-                       // error occured
-               }
-
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-
-               table_name = MEDIA_INFO_TABLE_NAME;
-               col_names = NULL;
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
-
-
-               /********************************************************************/
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
-
-
-               /********************************************************************/
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
-
-               col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
-
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
-               ret = create_table(db, table_name, col_names, col_types);
-               if(!ret) {
-                       // error occured
-               }
-
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-
-               table_name = CHAT_INFO_TABLE_NAME;
-               col_names = NULL;
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
-
-               col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               ret = create_table(db, table_name, col_names, col_types);
-               if(!ret) {
-                       // error occured
-               }
-
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-
-               table_name = PEER_INFO_TABLE_NAME;
-               col_names = NULL;
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_PEER_TYPE);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_ID);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_DATE);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_PRINT_NAME);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_STRUCT_VERSION);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_NO_OF_UNREAD_MESSAGES);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_SEEN_TIME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
-
-               col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       char* table_name = USER_INFO_TABLE_NAME;
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       Eina_Bool ret = create_table(table_name, col_names, col_types);
+       if(!ret) {
+               // error occured
+       }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+
+       table_name = BUDDY_INFO_TABLE_NAME;
+       col_names = NULL;
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_ID);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PRINT_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_STRUCTURE_VERSION);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_FIRST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_LAST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ONLINE_STATUS);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_SEEN_TIME);
+
+       col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       ret = create_table(table_name, col_names, col_types);
+       if(!ret) {
+               // error occured
+       }
 
-               ret = create_table(db, table_name, col_names, col_types);
-               if(!ret) {
-                       // error occured
-               }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+
+       table_name = MEDIA_INFO_TABLE_NAME;
+       col_names = NULL;
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
+
+
+       /********************************************************************/
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
+
+
+       /********************************************************************/
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
+
+       col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       ret = create_table(table_name, col_names, col_types);
+       if(!ret) {
+               // error occured
+       }
 
-               eina_list_free(col_names);
-               eina_list_free(col_types);
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+
+       table_name = CHAT_INFO_TABLE_NAME;
+       col_names = NULL;
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
+
+       col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       ret = create_table(table_name, col_names, col_types);
+       if(!ret) {
+               // error occured
+       }
 
-               close_database(db);
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+
+       table_name = PEER_INFO_TABLE_NAME;
+       col_names = NULL;
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_PEER_TYPE);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_ID);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_DATE);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_PRINT_NAME);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_STRUCT_VERSION);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_NO_OF_UNREAD_MESSAGES);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_SEEN_TIME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
+
+       col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       ret = create_table(table_name, col_names, col_types);
+       if(!ret) {
+               // error occured
        }
+
+       eina_list_free(col_names);
+       eina_list_free(col_types);
 }
 
 void create_buddy_msg_table(const char* table_name)
 {
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db && table_name) {
-               // create user info table
-               Eina_List* col_names = NULL;
-
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               Eina_Bool ret = create_table(db, table_name, col_names, col_types);
-               if(!ret) {
-                       //("error: database creation failed");
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               close_database(db);
+       if(!table_name) {
+               return;
        }
+       // create user info table
+       Eina_List* col_names = NULL;
+
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       Eina_Bool ret = create_table(table_name, col_names, col_types);
+       if(!ret) {
+               //("error: database creation failed");
+       }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
 }
 
 void insert_buddy_msg_to_db(struct tgl_message *M)
 {
        // get user name using id from buddy_info_table
        int t = 0;
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
 #if 0
-               char* table_name = BUDDY_INFO_TABLE_NAME;
+       char* table_name = BUDDY_INFO_TABLE_NAME;
 
-               int user_id = M->from_id.id;
-               char usr_str[50];
-               sprintf(usr_str,"%d",user_id);
+       int user_id = M->from_id.id;
+       char usr_str[50];
+       sprintf(usr_str,"%d",user_id);
 
-               char* where_clause = (char*)malloc(strlen(BUDDY_INFO_TABLE_BUDDY_ID) + strlen(" = ") + strlen(usr_str));
-               strcpy(where_clause, BUDDY_INFO_TABLE_BUDDY_ID);
-               strcat(where_clause, " = ");
-               strcat(where_clause, usr_str);
+       char* where_clause = (char*)malloc(strlen(BUDDY_INFO_TABLE_BUDDY_ID) + strlen(" = ") + strlen(usr_str));
+       strcpy(where_clause, BUDDY_INFO_TABLE_BUDDY_ID);
+       strcat(where_clause, " = ");
+       strcat(where_clause, usr_str);
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
 
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHONE_NO);
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHONE_NO);
 
-               Eina_List* vals = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause);
-               close_database(db);
+       Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause);
+       close_database(db);
 
-               char* phone_no = NULL;
+       char* phone_no = NULL;
 
-               if(!vals) {
-                       //("DB error");
-                       return;
-               } else {
-                       int row_count = eina_list_count(vals);
-
-                       for (int i = 0 ; i < row_count ; i++) {
-                               Eina_List* row_vals = eina_list_nth(vals, i);
-                               phone_no = (char*)eina_list_nth(row_vals, 0);
-                               if(!phone_no) {
-                                       //("DB Error");
-                                       return;
-                               } else {
-                                       break;
-                               }
-                               eina_list_free(row_vals);
+       if(!vals) {
+               //("DB error");
+               return;
+       } else {
+               int row_count = eina_list_count(vals);
+
+               for (int i = 0 ; i < row_count ; i++) {
+                       Eina_List* row_vals = eina_list_nth(vals, i);
+                       phone_no = (char*)eina_list_nth(row_vals, 0);
+                       if(!phone_no) {
+                               //("DB Error");
+                               return;
+                       } else {
+                               break;
                        }
-                       eina_list_free(vals);
+                       eina_list_free(row_vals);
                }
+               eina_list_free(vals);
+       }
 
-               if(phone_no) {
-                       char* tb_name = get_table_name_from_number(phone_no);
-                       insert_msg_into_db(M, tb_name, t);
-                       free(tb_name);
-                       free(phone_no);
-               }
-#else
-               int user_id = 0;
-               if (tgl_get_peer_type(M->to_id) == TGL_PEER_USER) {
-                       user_id = M->from_id.id;
-               } else if (tgl_get_peer_type(M->to_id) == TGL_PEER_CHAT) {
-                       user_id = M->to_id.id;
-               }
-               char* tb_name = get_table_name_from_number(user_id);
+       if(phone_no) {
+               char* tb_name = get_table_name_from_number(phone_no);
                insert_msg_into_db(M, tb_name, t);
                free(tb_name);
-#endif
+               free(phone_no);
        }
+#else
+       int user_id = 0;
+       if (tgl_get_peer_type(M->to_id) == TGL_PEER_USER) {
+               user_id = M->from_id.id;
+       } else if (tgl_get_peer_type(M->to_id) == TGL_PEER_CHAT) {
+               user_id = M->to_id.id;
+       }
+       char* tb_name = get_table_name_from_number(user_id);
+       insert_msg_into_db(M, tb_name, t);
+       free(tb_name);
+#endif
 }
 
 void insert_peer_into_database(tgl_peer_t* UC, int last_msg_id, int unread_count)
@@ -429,161 +420,155 @@ void insert_peer_into_database(tgl_peer_t* UC, int last_msg_id, int unread_count
        if (!UC) {
                return;
        }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if (db) {
-               char* table_name = PEER_INFO_TABLE_NAME;
-               Eina_List* col_names = NULL;
-               col_names = NULL;
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_PEER_TYPE);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_ID);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_DATE);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_PRINT_NAME);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_STRUCT_VERSION);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_NO_OF_UNREAD_MESSAGES);
-               col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_SEEN_TIME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       char* table_name = PEER_INFO_TABLE_NAME;
+       Eina_List* col_names = NULL;
+       col_names = NULL;
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_CHAT_ID);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_PEER_TYPE);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_ID);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_MESSAGE_DATE);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_PRINT_NAME);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_STRUCT_VERSION);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_NO_OF_UNREAD_MESSAGES);
+       col_names = eina_list_append(col_names, PEER_INFO_TABLE_LAST_SEEN_TIME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+
+       Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, &(UC->id.id));
+       col_values = eina_list_append(col_values, &(UC->id.type));
+       col_values = eina_list_append(col_values, &(UC->flags));
+       char last_msg_id_str[50];
+       sprintf(last_msg_id_str, "%d", last_msg_id);
+       col_values = eina_list_append(col_values, last_msg_id_str);
+
+       // last message date
+       if (UC->last) {
+               col_values = eina_list_append(col_values, &(UC->last->date));
+       } else {
+               int last_msg_date = 0;
+               col_values = eina_list_append(col_values, &(last_msg_date));
+       }
 
+       if (UC->print_name) {
+               col_values = eina_list_append(col_values, UC->print_name);
+       } else {
+               col_values = eina_list_append(col_values, "");
+       }
 
-               Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, &(UC->id.id));
-               col_values = eina_list_append(col_values, &(UC->id.type));
-               col_values = eina_list_append(col_values, &(UC->flags));
-               char last_msg_id_str[50];
-               sprintf(last_msg_id_str, "%d", last_msg_id);
-               col_values = eina_list_append(col_values, last_msg_id_str);
-
-               // last message date
-               if (UC->last) {
-                       col_values = eina_list_append(col_values, &(UC->last->date));
-               } else {
-                       int last_msg_date = 0;
-                       col_values = eina_list_append(col_values, &(last_msg_date));
-               }
+       col_values = eina_list_append(col_values, &(UC->structure_version));
 
-               if (UC->print_name) {
-                       col_values = eina_list_append(col_values, UC->print_name);
-               } else {
-                       col_values = eina_list_append(col_values, "");
-               }
+       col_values = eina_list_append(col_values, &(unread_count));
 
-               col_values = eina_list_append(col_values, &(UC->structure_version));
+       if (UC->id.type == TGL_PEER_USER ) {
+               col_values = eina_list_append(col_values, &(UC->user.status.when));
+       } else if (UC->id.type == TGL_PEER_CHAT ) {
+               col_values = eina_list_append(col_values, &(UC->chat.date));
+       } else {
+               int last_seen = 0;
+               col_values = eina_list_append(col_values, &(last_seen));
+       }
 
-               col_values = eina_list_append(col_values, &(unread_count));
+       col_values = eina_list_append(col_values, "");
 
-               if (UC->id.type == TGL_PEER_USER ) {
-                       col_values = eina_list_append(col_values, &(UC->user.status.when));
-               } else if (UC->id.type == TGL_PEER_CHAT ) {
-                       col_values = eina_list_append(col_values, &(UC->chat.date));
-               } else {
-                       int last_seen = 0;
-                       col_values = eina_list_append(col_values, &(last_seen));
-               }
 
-               col_values = eina_list_append(col_values, "");
 
+       struct tgl_photo* photo = &(UC->photo);
+       int photo_id = -1;
+       if (photo) {
+               photo_id = photo->id;
+       }
+       col_values = eina_list_append(col_values, &(photo_id));
 
+       Eina_Bool ret = insert_table(table_name, col_names, col_types,col_values);
+       if(!ret) {
+               // already exist. So update the table
+               char* where_clause = NULL;
+               char user_id_str[50];
+               sprintf(user_id_str,"%d",UC->id.id);
+               where_clause = (char*)malloc(strlen(PEER_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(user_id_str) + 1);
+               strcpy(where_clause, PEER_INFO_TABLE_CHAT_ID);
+               strcat(where_clause, " = ");
+               strcat(where_clause, user_id_str);
+               ret = update_table(table_name, col_names, col_types, col_values, where_clause);
+       } else {
 
-               struct tgl_photo* photo = &(UC->photo);
-               int photo_id = -1;
-               if (photo) {
-                       photo_id = photo->id;
-               }
-               col_values = eina_list_append(col_values, &(photo_id));
-
-               Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values);
-               if(!ret) {
-                       // already exist. So update the table
-                       char* where_clause = NULL;
-                       char user_id_str[50];
-                       sprintf(user_id_str,"%d",UC->id.id);
-                       where_clause = (char*)malloc(strlen(PEER_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(user_id_str) + 1);
-                       strcpy(where_clause, PEER_INFO_TABLE_CHAT_ID);
-                       strcat(where_clause, " = ");
-                       strcat(where_clause, user_id_str);
-                       ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
-               } else {
-
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
-       }
-}
+       }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
+}
 
 struct tgl_message* get_message_from_message_table(long long msg_id, char* table_name)
 {
        struct tgl_message* message = NULL;
 
        Eina_List* message_details = NULL;
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if (db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               char *where_clause = NULL;
-               char msg_id_str[50];
-               sprintf(msg_id_str, "%lld", msg_id);
-               where_clause = (char *)malloc(strlen(MESSAGE_INFO_TABLE_MESSAGE_ID) + strlen(" = ") + strlen(msg_id_str) + 1);
-               strcpy(where_clause, MESSAGE_INFO_TABLE_MESSAGE_ID);
-               strcat(where_clause, " = ");
-               strcat(where_clause, msg_id_str);
-
-               message_details = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause);
-
-               free(where_clause);
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-       }
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       char *where_clause = NULL;
+       char msg_id_str[50];
+       sprintf(msg_id_str, "%lld", msg_id);
+       where_clause = (char *)malloc(strlen(MESSAGE_INFO_TABLE_MESSAGE_ID) + strlen(" = ") + strlen(msg_id_str) + 1);
+       strcpy(where_clause, MESSAGE_INFO_TABLE_MESSAGE_ID);
+       strcat(where_clause, " = ");
+       strcat(where_clause, msg_id_str);
+
+       message_details = get_values_from_table_sync(table_name, col_names, col_types, where_clause);
+
+       free(where_clause);
+       eina_list_free(col_names);
+       eina_list_free(col_types);
 
        if (message_details && eina_list_count(message_details) > 0) {
                Eina_List* ts_msg = eina_list_nth(message_details, 0);
@@ -636,772 +621,263 @@ struct tgl_message* get_message_from_message_table(long long msg_id, char* table
                        free(temp_out);
                }
 
-               int *temp_unread = (int*)eina_list_nth(ts_msg, 7);
-               if (temp_unread) {
-                       message->unread  = *temp_unread;
-                       free(temp_unread);
-               }
-
-               int *temp_date = (int*)eina_list_nth(ts_msg, 8);
-               if (temp_date) {
-                       message->date  = *temp_date;
-                       free(temp_date);
-               }
-
-               int *temp_service = (int*)eina_list_nth(ts_msg, 9);
-               if (temp_service) {
-                       message->service  = *temp_service;
-                       free(temp_service);
-               }
-
-               char *temp_msg = (char*)eina_list_nth(ts_msg, 10);
-               if (temp_msg) {
-                       message->message  = strdup(temp_msg);
-                       free(temp_msg);
-               }
-
-               int *temp_message_state = (int*)eina_list_nth(ts_msg, 11);
-               if (temp_message_state) {
-                       message->msg_state  = *temp_message_state;
-                       free(temp_message_state);
-               }
-
-               int *temp_message_len = (int*)eina_list_nth(ts_msg, 12);
-               if (temp_message_len) {
-                       message->message_len  = *temp_message_len;
-                       free(temp_message_len);
-               }
-
-               int *temp_media_type = (int*)eina_list_nth(ts_msg, 13);
-               if (temp_media_type) {
-                       message->media.type  = *temp_media_type;
-                       free(temp_media_type);
-               }
-
-               char *temp_media_id = (char*)eina_list_nth(ts_msg, 14);
-
-               char *eptr;
-               if(message->media.type == tgl_message_media_none) {
-
-                       if (temp_media_id) {
-                               free(temp_media_id);
-                       }
-
-               } else if(message->media.type == tgl_message_media_photo) {
-
-                       if (temp_media_id) {
-                               message->media.photo.id  = strtoll(temp_media_id, &eptr, 10);
-                               free(temp_media_id);
-                       }
-
-               } else if(message->media.type == tgl_message_media_document) {
-
-                       if (temp_media_id) {
-                               message->media.document.id  = strtoll(temp_media_id, &eptr, 10);
-                               free(temp_media_id);
-                       }
-
-               } else if(message->media.type == tgl_message_media_geo) {
-
-                       if (temp_media_id) {
-                               free(temp_media_id);
-                       }
-
-               } else if(message->media.type == tgl_message_media_contact) {
-
-                       if (temp_media_id) {
-                               free(temp_media_id);
-                       }
-
-               } else if(message->media.type == tgl_message_media_unsupported) {
-
-                       if (temp_media_id) {
-                               free(temp_media_id);
-                       }
-
-               } else if(message->media.type == tgl_message_media_photo_encr) {
-
-                       if (temp_media_id) {
-                               message->media.encr_photo.id  = strtoll(temp_media_id, &eptr, 10);
-                               free(temp_media_id);
-                       }
-
-               } else if(message->media.type == tgl_message_media_document_encr) {
-
-                       if (temp_media_id) {
-                               message->media.encr_document.id  = strtoll(temp_media_id, &eptr, 10);
-                               free(temp_media_id);
-                       }
-
-               } else  {
-                       if (temp_media_id) {
-                               free(temp_media_id);
-                       }
-               }
-               int *temp_unique_id = (int*)eina_list_nth(ts_msg, 15);
-               if (temp_unique_id) {
-                       free(temp_unique_id);
-               }
-       }
-       return message;
-}
-
-void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id)
-{
-       if(!M) {
-               return;
-       }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, &(M->id));
-               col_values = eina_list_append(col_values, &(M->flags));
-               col_values = eina_list_append(col_values, &(M->fwd_from_id.id));
-               col_values = eina_list_append(col_values, &(M->fwd_date));
-               col_values = eina_list_append(col_values, &(M->from_id.id));
-               col_values = eina_list_append(col_values, &(M->to_id.id));
-               col_values = eina_list_append(col_values, &(M->out));
-               col_values = eina_list_append(col_values, &(M->unread));
-               col_values = eina_list_append(col_values, &(M->date));
-               col_values = eina_list_append(col_values, &(M->service));
-
-               if(M->message)
-                       col_values = eina_list_append(col_values, M->message);
-               else
-                       col_values = eina_list_append(col_values, " ");
-
-               col_values = eina_list_append(col_values, &(M->msg_state));
-               col_values = eina_list_append(col_values, &(M->message_len));
-               col_values = eina_list_append(col_values, &(M->media.type));
-
-               char *dummy_val = "";
-               if(M->media.type == tgl_message_media_none) {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               } else if(M->media.type == tgl_message_media_photo) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%lld", M->media.photo.id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_document) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%d", M->media.document.dc_id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_geo) {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               } else if(M->media.type == tgl_message_media_contact) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%d",M->media.user_id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_unsupported) {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               } else if(M->media.type == tgl_message_media_photo_encr) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%lld",M->media.encr_photo.id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_document_encr) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%lld",M->media.document.id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else  {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               }
-
-               col_values = eina_list_append(col_values, &unique_id);
-
-               Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values);
-               if(!ret) {
-                       //("error: database creation failed");
-               } else {
-
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
-       }
-}
-
-void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id)
-{
-       if(!M) {
-               return;
-       }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
-               if (unique_id != -1) {
-                       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
-               }
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               if (unique_id != -1) {
-                       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               }
-
-               Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, &(M->id));
-               col_values = eina_list_append(col_values, &(M->flags));
-               col_values = eina_list_append(col_values, &(M->fwd_from_id.id));
-               col_values = eina_list_append(col_values, &(M->fwd_date));
-               col_values = eina_list_append(col_values, &(M->from_id.id));
-               col_values = eina_list_append(col_values, &(M->to_id.id));
-               col_values = eina_list_append(col_values, &(M->out));
-               col_values = eina_list_append(col_values, &(M->unread));
-               col_values = eina_list_append(col_values, &(M->date));
-               col_values = eina_list_append(col_values, &(M->service));
-
-               if(M->message)
-                       col_values = eina_list_append(col_values, M->message);
-               else
-                       col_values = eina_list_append(col_values, " ");
-
-               col_values = eina_list_append(col_values, &(M->msg_state));
-               col_values = eina_list_append(col_values, &(M->message_len));
-               col_values = eina_list_append(col_values, &(M->media.type));
-
-               char *dummy_val = "";
-               if(M->media.type == tgl_message_media_none) {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               } else if(M->media.type == tgl_message_media_photo) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%lld", M->media.photo.id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_document) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%d", M->media.document.dc_id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_geo) {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               } else if(M->media.type == tgl_message_media_contact) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%d",M->media.user_id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_unsupported) {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               } else if(M->media.type == tgl_message_media_photo_encr) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%lld",M->media.encr_photo.id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else if(M->media.type == tgl_message_media_document_encr) {
-
-                       char temp_media_id[50];
-                       sprintf(temp_media_id, "%lld",M->media.document.id);
-
-                       col_values = eina_list_append(col_values, temp_media_id);
-               } else  {
-                       col_values = eina_list_append(col_values, (dummy_val));
-               }
-
-               if (unique_id != -1) {
-                       int u_id = unique_id;
-                       col_values = eina_list_append(col_values, &u_id);
-               }
-
-
-               char *where_clause = NULL;
-
-               if (unique_id > 0) {
-
-                       char usr_str[50];
-                       sprintf(usr_str,"%d",unique_id);
-                       where_clause = (char*)malloc(strlen(MESSAGE_INFO_TABLE_UNIQUE_ID) + strlen(" = ") + strlen(usr_str) + 1);
-                       strcpy(where_clause, MESSAGE_INFO_TABLE_UNIQUE_ID);
-                       strcat(where_clause, " = ");
-                       strcat(where_clause, usr_str);
-
-               } else {
-
-                       char usr_str[50];
-                       sprintf(usr_str,"%lld", M->id);
-                       where_clause = (char *)malloc(strlen(MESSAGE_INFO_TABLE_MESSAGE_ID) + strlen(" = ") + strlen(usr_str) + 1);
-                       strcpy(where_clause, MESSAGE_INFO_TABLE_MESSAGE_ID);
-                       strcat(where_clause, " = ");
-                       strcat(where_clause, usr_str);
-
-               }
-
-               Eina_Bool ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
-
-               if(!ret) {
-                       //("error: database creation failed");
-               } else {
-
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
-       }
-}
-
-Eina_List* get_registered_user_info()
-{
-       Eina_List* user_details = NULL;
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               char* table_name = USER_INFO_TABLE_NAME;
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               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(db, table_name, col_names, col_types, NULL);
-
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-       }
-       return user_details;
-}
-
-Eina_Bool is_chat_id_already_exists(struct tgl_chat *chat_info)
-{
-       // get chat name chat id from chat_info_table
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               char* table_name = CHAT_INFO_TABLE_NAME;
-
-               int chat_id = chat_info->id.id;
-               char chat_str[50];
-               sprintf(chat_str,"%d",chat_id);
-
-               char* where_clause = (char*)malloc(strlen(CHAT_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(chat_str));
-               strcpy(where_clause, CHAT_INFO_TABLE_CHAT_ID);
-               strcat(where_clause, " = ");
-               strcat(where_clause, chat_str);
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
-
-               Eina_List* vals = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause);
-               close_database(db);
-
-               char* chat_name = NULL;
-
-               if(!vals) {
-                       //("DB error");
-                       return EINA_FALSE;
-               } else {
-                       int row_count = eina_list_count(vals);
-
-                       for (int i = 0 ; i < row_count ; i++) {
-                               Eina_List* row_vals = eina_list_nth(vals, i);
-                               chat_name = (char*)eina_list_nth(row_vals, 0);
-                               if(!chat_name) {
-                                       //("DB Error");
-                                       return EINA_FALSE;
-                               } else {
-                                       break;
-                               }
-                               eina_list_free(row_vals);
-                       }
-                       eina_list_free(vals);
-               }
-
-               if(chat_name) {
-                       free(chat_name);
-                       return EINA_TRUE;
-               }
-       }
-       return EINA_FALSE;
-}
-
-void insert_buddy_into_db(char* table_name, struct tgl_user* U)
-{
-       if(!U) {
-               return;
-       }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
-
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+               int *temp_unread = (int*)eina_list_nth(ts_msg, 7);
+               if (temp_unread) {
+                       message->unread  = *temp_unread;
+                       free(temp_unread);
+               }
 
-               Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, &(U->id.id));
-               if(U->print_name)
-                       col_values = eina_list_append(col_values, U->print_name);
-               else
-                       col_values = eina_list_append(col_values, "");
+               int *temp_date = (int*)eina_list_nth(ts_msg, 8);
+               if (temp_date) {
+                       message->date  = *temp_date;
+                       free(temp_date);
+               }
 
-               col_values = eina_list_append(col_values, &(U->structure_version));
-               col_values = eina_list_append(col_values, "");
-               col_values = eina_list_append(col_values, &(U->photo_id));
+               int *temp_service = (int*)eina_list_nth(ts_msg, 9);
+               if (temp_service) {
+                       message->service  = *temp_service;
+                       free(temp_service);
+               }
 
-               if(U->first_name)
-                       col_values = eina_list_append(col_values, U->first_name);
-               else
-                       col_values = eina_list_append(col_values, "");
-               if(U->last_name)
-                       col_values = eina_list_append(col_values, U->last_name);
-               else
-                       col_values = eina_list_append(col_values, "");
+               char *temp_msg = (char*)eina_list_nth(ts_msg, 10);
+               if (temp_msg) {
+                       message->message  = strdup(temp_msg);
+                       free(temp_msg);
+               }
 
-               if(U->phone)
-                       col_values = eina_list_append(col_values, U->phone);
-               else
-                       col_values = eina_list_append(col_values, "");
+               int *temp_message_state = (int*)eina_list_nth(ts_msg, 11);
+               if (temp_message_state) {
+                       message->msg_state  = *temp_message_state;
+                       free(temp_message_state);
+               }
 
-               col_values = eina_list_append(col_values, &(U->access_hash));
+               int *temp_message_len = (int*)eina_list_nth(ts_msg, 12);
+               if (temp_message_len) {
+                       message->message_len  = *temp_message_len;
+                       free(temp_message_len);
+               }
 
-               if(U->real_first_name)
-                       col_values = eina_list_append(col_values, U->real_first_name);
-               else
-                       col_values = eina_list_append(col_values, "");
+               int *temp_media_type = (int*)eina_list_nth(ts_msg, 13);
+               if (temp_media_type) {
+                       message->media.type  = *temp_media_type;
+                       free(temp_media_type);
+               }
 
-               if(U->real_last_name)
-                       col_values = eina_list_append(col_values, U->real_last_name);
-               else
-                       col_values = eina_list_append(col_values, "");
+               char *temp_media_id = (char*)eina_list_nth(ts_msg, 14);
 
-               if(U->username)
-                       col_values = eina_list_append(col_values, U->username);
-               else
-                       col_values = eina_list_append(col_values, "");
+               char *eptr;
+               if(message->media.type == tgl_message_media_none) {
 
-               col_values = eina_list_append(col_values, &(U->status.online));
-               col_values = eina_list_append(col_values, &(U->status.when));
+                       if (temp_media_id) {
+                               free(temp_media_id);
+                       }
 
-               Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values);
-               if(!ret) {
-                       // already exist. So update the table
-                       char* where_clause = NULL;
-                       char user_id_str[50];
-                       sprintf(user_id_str,"%d",U->id.id);
-                       where_clause = (char*)malloc(strlen(USER_INFO_TABLE_USER_ID) + strlen(" = ") + strlen(user_id_str) + 1);
-                       strcpy(where_clause, USER_INFO_TABLE_USER_ID);
-                       strcat(where_clause, " = ");
-                       strcat(where_clause, user_id_str);
-                       ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
-               } else {
-                       // successfully inserted.
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
-       }
-}
+               } else if(message->media.type == tgl_message_media_photo) {
 
-void insert_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
-{
-       if (!chat_info) {
-               return;
-       }
-       char* table_name = CHAT_INFO_TABLE_NAME;
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
+                       if (temp_media_id) {
+                               message->media.photo.id  = strtoll(temp_media_id, &eptr, 10);
+                               free(temp_media_id);
+                       }
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+               } else if(message->media.type == tgl_message_media_document) {
 
-               Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, &(chat_info->id.id));
-               col_values = eina_list_append(col_values, &(chat_info->flags));
+                       if (temp_media_id) {
+                               message->media.document.id  = strtoll(temp_media_id, &eptr, 10);
+                               free(temp_media_id);
+                       }
 
-               if(chat_info->print_title)
-                       col_values = eina_list_append(col_values, chat_info->print_title);
-               else
-                       col_values = eina_list_append(col_values, "");
+               } else if(message->media.type == tgl_message_media_geo) {
 
-               col_values = eina_list_append(col_values, &(chat_info->structure_version));
+                       if (temp_media_id) {
+                               free(temp_media_id);
+                       }
 
-               long long photo_id = chat_info->photo.id;
+               } else if(message->media.type == tgl_message_media_contact) {
 
-               char photo_id_str[50];
-               sprintf(photo_id_str, "%lld", photo_id);
-               col_values = eina_list_append(col_values, photo_id_str);
+                       if (temp_media_id) {
+                               free(temp_media_id);
+                       }
 
-               if (photo_path) {
-                       col_values = eina_list_append(col_values, photo_path);
-               } else {
-                       col_values = eina_list_append(col_values, " ");
-               }
+               } else if(message->media.type == tgl_message_media_unsupported) {
 
-               if(chat_info->title)
-                       col_values = eina_list_append(col_values, chat_info->title);
-               else
-                       col_values = eina_list_append(col_values, "");
+                       if (temp_media_id) {
+                               free(temp_media_id);
+                       }
 
-               col_values = eina_list_append(col_values, &(chat_info->users_num));
-               col_values = eina_list_append(col_values, &(chat_info->user_list_size));
-               col_values = eina_list_append(col_values, &(chat_info->user_list_version));
+               } else if(message->media.type == tgl_message_media_photo_encr) {
 
-               int inventor_id = 0;
-               if (chat_info->user_list) {
-                       inventor_id = chat_info->user_list[0].inviter_id;
-               }
+                       if (temp_media_id) {
+                               message->media.encr_photo.id  = strtoll(temp_media_id, &eptr, 10);
+                               free(temp_media_id);
+                       }
 
-               col_values = eina_list_append(col_values, &(inventor_id));
-
-               /****** add chat users list ********/
-               char* full_ids = NULL;
-               if (chat_info->user_list) {
-                       char* chat_user_ids[chat_info->user_list_size];
-                       int total_len = 0;
-                       for (int i = 0; i < chat_info->user_list_size; i++) {
-                               char temp_user_id[15];
-                               int temp_id = chat_info->user_list[i].user_id;
-                               sprintf(temp_user_id,"%d",temp_id);
-                               chat_user_ids[i] = (char*)malloc(strlen(temp_user_id) + 1);
-                               strcpy(chat_user_ids[i], temp_user_id);
-                               total_len = total_len + strlen(temp_user_id);
-                               total_len = total_len + 1; // delimitor
+               } else if(message->media.type == tgl_message_media_document_encr) {
+
+                       if (temp_media_id) {
+                               message->media.encr_document.id  = strtoll(temp_media_id, &eptr, 10);
+                               free(temp_media_id);
                        }
 
-                       full_ids = (char*)malloc(total_len);
-                       for (int i = 0; i < chat_info->user_list_size; i++) {
-                               if (i == 0) {
-                                       strcpy(full_ids, chat_user_ids[i]);
-                               } else {
-                                       strcat(full_ids, chat_user_ids[i]);
-                               }
-                               if (i < chat_info->user_list_size - 1) {
-                                       strcat(full_ids, ",");
-                               }
-                               free(chat_user_ids[i]);
+               } else  {
+                       if (temp_media_id) {
+                               free(temp_media_id);
                        }
-               } else {
-                       full_ids = (char*)malloc(2);
-                       strcpy(full_ids, " ");
                }
+               int *temp_unique_id = (int*)eina_list_nth(ts_msg, 15);
+               if (temp_unique_id) {
+                       free(temp_unique_id);
+               }
+       }
+       return message;
+}
 
-               col_values = eina_list_append(col_values, full_ids);
-               /****** add chat users list ********/
+void insert_msg_into_db(struct tgl_message *M, char* table_name, int unique_id)
+{
+       if(!M) {
+               return;
+       }
 
-               col_values = eina_list_append(col_values, &(chat_info->date));
-               col_values = eina_list_append(col_values, &(chat_info->version));
-               col_values = eina_list_append(col_values, &(chat_info->admin_id));
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
+       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, &(M->id));
+       col_values = eina_list_append(col_values, &(M->flags));
+       col_values = eina_list_append(col_values, &(M->fwd_from_id.id));
+       col_values = eina_list_append(col_values, &(M->fwd_date));
+       col_values = eina_list_append(col_values, &(M->from_id.id));
+       col_values = eina_list_append(col_values, &(M->to_id.id));
+       col_values = eina_list_append(col_values, &(M->out));
+       col_values = eina_list_append(col_values, &(M->unread));
+       col_values = eina_list_append(col_values, &(M->date));
+       col_values = eina_list_append(col_values, &(M->service));
+
+       if(M->message)
+               col_values = eina_list_append(col_values, M->message);
+       else
+               col_values = eina_list_append(col_values, " ");
+
+       col_values = eina_list_append(col_values, &(M->msg_state));
+       col_values = eina_list_append(col_values, &(M->message_len));
+       col_values = eina_list_append(col_values, &(M->media.type));
+
+       char *dummy_val = "";
+       if(M->media.type == tgl_message_media_none) {
+               col_values = eina_list_append(col_values, (dummy_val));
+       } else if(M->media.type == tgl_message_media_photo) {
+
+               char temp_media_id[50];
+               sprintf(temp_media_id, "%lld", M->media.photo.id);
+
+               col_values = eina_list_append(col_values, temp_media_id);
+       } else if(M->media.type == tgl_message_media_document) {
+
+               char temp_media_id[50];
+               sprintf(temp_media_id, "%d", M->media.document.dc_id);
+
+               col_values = eina_list_append(col_values, temp_media_id);
+       } else if(M->media.type == tgl_message_media_geo) {
+               col_values = eina_list_append(col_values, (dummy_val));
+       } else if(M->media.type == tgl_message_media_contact) {
+
+               char temp_media_id[50];
+               sprintf(temp_media_id, "%d",M->media.user_id);
+
+               col_values = eina_list_append(col_values, temp_media_id);
+       } else if(M->media.type == tgl_message_media_unsupported) {
+               col_values = eina_list_append(col_values, (dummy_val));
+       } else if(M->media.type == tgl_message_media_photo_encr) {
+
+               char temp_media_id[50];
+               sprintf(temp_media_id, "%lld",M->media.encr_photo.id);
+
+               col_values = eina_list_append(col_values, temp_media_id);
+       } else if(M->media.type == tgl_message_media_document_encr) {
+
+               char temp_media_id[50];
+               sprintf(temp_media_id, "%lld",M->media.document.id);
+
+               col_values = eina_list_append(col_values, temp_media_id);
+       } else  {
+               col_values = eina_list_append(col_values, (dummy_val));
+       }
 
-               Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values);
-               if(!ret) {
-                       // already exist. So update the table
-                       char* where_clause = NULL;
-                       char chat_id_str[50];
-                       sprintf(chat_id_str,"%d", chat_info->id.id);
-                       where_clause = (char*)malloc(strlen(CHAT_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(chat_id_str) + 1);
-                       strcpy(where_clause, CHAT_INFO_TABLE_CHAT_ID);
-                       strcat(where_clause, " = ");
-                       strcat(where_clause, chat_id_str);
-                       ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
-               } else {
+       col_values = eina_list_append(col_values, &unique_id);
+
+       Eina_Bool ret = insert_table(table_name, col_names, col_types,col_values);
+       if(!ret) {
+               //("error: database creation failed");
+       } else {
 
-               }
-               free(full_ids);
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
        }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
+
 }
 
-void update_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
+void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id)
 {
-       if (!chat_info) {
+       if(!M) {
                return;
        }
-       char* table_name = CHAT_INFO_TABLE_NAME;
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
+
                Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
-               if (photo_path) {
-                       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_ID);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FLAGS);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_FROM_ID);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FWD_DATE);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_FROM_ID);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_TO_ID);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_OUT_MSG);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNREAD);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_DATE);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_SERVICE);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_STATE);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MESSAGE_LENGTH);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_TYPE);
+               col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_MEDIA_ID);
+               if (unique_id != -1) {
+                       col_names = eina_list_append(col_names, MESSAGE_INFO_TABLE_UNIQUE_ID);
                }
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
-               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
 
                Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               if (photo_path) {
-                       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               }
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
@@ -1410,168 +886,137 @@ void update_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+               if (unique_id != -1) {
+                       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+               }
 
                Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, &(chat_info->id.id));
-               col_values = eina_list_append(col_values, &(chat_info->flags));
+               col_values = eina_list_append(col_values, &(M->id));
+               col_values = eina_list_append(col_values, &(M->flags));
+               col_values = eina_list_append(col_values, &(M->fwd_from_id.id));
+               col_values = eina_list_append(col_values, &(M->fwd_date));
+               col_values = eina_list_append(col_values, &(M->from_id.id));
+               col_values = eina_list_append(col_values, &(M->to_id.id));
+               col_values = eina_list_append(col_values, &(M->out));
+               col_values = eina_list_append(col_values, &(M->unread));
+               col_values = eina_list_append(col_values, &(M->date));
+               col_values = eina_list_append(col_values, &(M->service));
 
-               if(chat_info->print_title)
-                       col_values = eina_list_append(col_values, chat_info->print_title);
+               if(M->message)
+                       col_values = eina_list_append(col_values, M->message);
                else
-                       col_values = eina_list_append(col_values, "");
-
-               col_values = eina_list_append(col_values, &(chat_info->structure_version));
-
-               long long photo_id = chat_info->photo.id;
-
-               char photo_id_str[50];
-               sprintf(photo_id_str, "%lld", photo_id);
-               col_values = eina_list_append(col_values, photo_id_str);
+                       col_values = eina_list_append(col_values, " ");
 
-               if (photo_path) {
-                       col_values = eina_list_append(col_values, photo_path);
-               }
+               col_values = eina_list_append(col_values, &(M->msg_state));
+               col_values = eina_list_append(col_values, &(M->message_len));
+               col_values = eina_list_append(col_values, &(M->media.type));
 
-               if(chat_info->title)
-                       col_values = eina_list_append(col_values, chat_info->title);
-               else
-                       col_values = eina_list_append(col_values, "");
+               char *dummy_val = "";
+               if(M->media.type == tgl_message_media_none) {
+                       col_values = eina_list_append(col_values, (dummy_val));
+               } else if(M->media.type == tgl_message_media_photo) {
 
-               col_values = eina_list_append(col_values, &(chat_info->users_num));
-               col_values = eina_list_append(col_values, &(chat_info->user_list_size));
-               col_values = eina_list_append(col_values, &(chat_info->user_list_version));
+                       char temp_media_id[50];
+                       sprintf(temp_media_id, "%lld", M->media.photo.id);
 
-               int inventor_id = 0;
-               if (chat_info->user_list) {
-                       inventor_id = chat_info->user_list[0].inviter_id;
-               }
+                       col_values = eina_list_append(col_values, temp_media_id);
+               } else if(M->media.type == tgl_message_media_document) {
 
-               col_values = eina_list_append(col_values, &(inventor_id));
-
-               /****** add chat users list ********/
-               char* full_ids = NULL;
-               if (chat_info->user_list) {
-                       char* chat_user_ids[chat_info->user_list_size];
-                       int total_len = 0;
-                       for (int i = 0; i < chat_info->user_list_size; i++) {
-                               char temp_user_id[15];
-                               int temp_id = chat_info->user_list[i].user_id;
-                               sprintf(temp_user_id,"%d",temp_id);
-                               chat_user_ids[i] = (char*)malloc(strlen(temp_user_id) + 1);
-                               strcpy(chat_user_ids[i], temp_user_id);
-                               total_len = total_len + strlen(temp_user_id);
-                               total_len = total_len + 1; // delimitor
-                       }
+                       char temp_media_id[50];
+                       sprintf(temp_media_id, "%d", M->media.document.dc_id);
 
-                       full_ids = (char*)malloc(total_len);
-                       for (int i = 0; i < chat_info->user_list_size; i++) {
-                               if (i == 0) {
-                                       strcpy(full_ids, chat_user_ids[i]);
-                               } else {
-                                       strcat(full_ids, chat_user_ids[i]);
-                               }
-                               if (i < chat_info->user_list_size - 1) {
-                                       strcat(full_ids, ",");
-                               }
-                       }
-               } else {
-                       full_ids = (char*)malloc(2);
-                       strcpy(full_ids, " ");
-               }
+                       col_values = eina_list_append(col_values, temp_media_id);
+               } else if(M->media.type == tgl_message_media_geo) {
+                       col_values = eina_list_append(col_values, (dummy_val));
+               } else if(M->media.type == tgl_message_media_contact) {
 
-               col_values = eina_list_append(col_values, full_ids);
-               /****** add chat users list ********/
+                       char temp_media_id[50];
+                       sprintf(temp_media_id, "%d",M->media.user_id);
 
-               col_values = eina_list_append(col_values, &(chat_info->date));
-               col_values = eina_list_append(col_values, &(chat_info->version));
-               col_values = eina_list_append(col_values, &(chat_info->admin_id));
+                       col_values = eina_list_append(col_values, temp_media_id);
+               } else if(M->media.type == tgl_message_media_unsupported) {
+                       col_values = eina_list_append(col_values, (dummy_val));
+               } else if(M->media.type == tgl_message_media_photo_encr) {
 
-               char* where_clause = NULL;
+                       char temp_media_id[50];
+                       sprintf(temp_media_id, "%lld",M->media.encr_photo.id);
 
-               char chat_id_str[50];
-               sprintf(chat_id_str,"%d",chat_info->id.id);
-               where_clause = (char*)malloc(strlen(CHAT_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(chat_id_str) + 1);
-               strcpy(where_clause, CHAT_INFO_TABLE_CHAT_ID);
-               strcat(where_clause, " = ");
-               strcat(where_clause, chat_id_str);
+                       col_values = eina_list_append(col_values, temp_media_id);
+               } else if(M->media.type == tgl_message_media_document_encr) {
 
-               Eina_Bool ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
+                       char temp_media_id[50];
+                       sprintf(temp_media_id, "%lld",M->media.document.id);
 
-               if(!ret) {
-                       // error handling
-               } else {
+                       col_values = eina_list_append(col_values, temp_media_id);
+               } else  {
+                       col_values = eina_list_append(col_values, (dummy_val));
+               }
 
+               if (unique_id != -1) {
+                       int u_id = unique_id;
+                       col_values = eina_list_append(col_values, &u_id);
                }
 
-               free(full_ids);
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
-       }
-}
 
-void update_buddy_pic_db(char* file_path, char* table_name, int id)
-{
-       if (!file_path || !table_name) {
-               return;
-       }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
+               char *where_clause = NULL;
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+               if (unique_id > 0) {
 
-               Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, file_path);
+                       char usr_str[50];
+                       sprintf(usr_str,"%d",unique_id);
+                       where_clause = (char*)malloc(strlen(MESSAGE_INFO_TABLE_UNIQUE_ID) + strlen(" = ") + strlen(usr_str) + 1);
+                       strcpy(where_clause, MESSAGE_INFO_TABLE_UNIQUE_ID);
+                       strcat(where_clause, " = ");
+                       strcat(where_clause, usr_str);
 
-               char* where_clause = NULL;
+               } else {
 
-               char usr_str[50];
-               sprintf(usr_str,"%d",id);
-               where_clause = (char*)malloc(strlen(USER_INFO_TABLE_USER_ID) + strlen(" = ") + strlen(usr_str) + 1);
-               strcpy(where_clause, USER_INFO_TABLE_USER_ID);
-               strcat(where_clause, " = ");
-               strcat(where_clause, usr_str);
+                       char usr_str[50];
+                       sprintf(usr_str,"%lld", M->id);
+                       where_clause = (char *)malloc(strlen(MESSAGE_INFO_TABLE_MESSAGE_ID) + strlen(" = ") + strlen(usr_str) + 1);
+                       strcpy(where_clause, MESSAGE_INFO_TABLE_MESSAGE_ID);
+                       strcat(where_clause, " = ");
+                       strcat(where_clause, usr_str);
+
+               }
 
-               Eina_Bool ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
+               Eina_Bool ret = update_table(table_name, col_names, col_types, col_values, where_clause);
 
                if(!ret) {
-                       // error handling
+                       //("error: database creation failed");
                } else {
 
                }
-               free(where_clause);
                eina_list_free(col_names);
                eina_list_free(col_types);
                eina_list_free(col_values);
-               close_database(db);
-       }
 }
 
-Eina_List* get_buddy_info(int buddy_id)
+Eina_List* get_registered_user_info()
 {
        Eina_List* user_details = NULL;
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               char* table_name = BUDDY_INFO_TABLE_NAME;
+
+               char* table_name = USER_INFO_TABLE_NAME;
                Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_ID);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PRINT_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_STRUCTURE_VERSION);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_FIRST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_LAST_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_NAME);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ONLINE_STATUS);
-               col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_SEEN_TIME);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
+               col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
 
                Eina_List* col_types = NULL;
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
@@ -1589,1019 +1034,1528 @@ Eina_List* get_buddy_info(int buddy_id)
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
                col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
 
-               char buddy_id_str[50];
-               sprintf(buddy_id_str, "%d", buddy_id);
-
-               char* where_clause = (char*)malloc(strlen(BUDDY_INFO_TABLE_BUDDY_ID) + strlen(" = ") + strlen(buddy_id_str) + 1);
-               strcpy(where_clause, BUDDY_INFO_TABLE_BUDDY_ID);
-               strcat(where_clause, " = ");
-               strcat(where_clause, buddy_id_str);
-
-               user_details = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause);
-               free(where_clause);
+               user_details = get_values_from_table_sync(table_name, col_names, col_types, NULL);
 
                eina_list_free(col_names);
                eina_list_free(col_types);
-       }
        return user_details;
 }
 
-void update_receive_media_info_in_db(long long media_id, char* file_path)
+Eina_Bool is_chat_id_already_exists(struct tgl_chat *chat_info)
 {
-       if(!file_path) {
-               return;
-       }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       char* table_name = MEDIA_INFO_TABLE_NAME;
+       // get chat name chat id from chat_info_table
 
-       if (db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
+       char* table_name = CHAT_INFO_TABLE_NAME;
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       int chat_id = chat_info->id.id;
+       char chat_str[50];
+       sprintf(chat_str,"%d",chat_id);
 
-               Eina_List* col_values = NULL;
-               col_values = eina_list_append(col_values, file_path);
+       char* where_clause = (char*)malloc(strlen(CHAT_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(chat_str));
+       strcpy(where_clause, CHAT_INFO_TABLE_CHAT_ID);
+       strcat(where_clause, " = ");
+       strcat(where_clause, chat_str);
 
-               char media_id_str[50];
-               sprintf(media_id_str, "%lld", media_id);
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
 
-               char* where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = '") + strlen(media_id_str) + strlen("'") + 1);
-               strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID);
-               strcat(where_clause, " = '");
-               strcat(where_clause, media_id_str);
-               strcat(where_clause, "'");
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
 
-               Eina_Bool ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
+       Eina_List* vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause);
 
-               if(!ret) {
-                       // error handling
-               } else {
+       char* chat_name = NULL;
 
+       if(!vals) {
+               //("DB error");
+               return EINA_FALSE;
+       } else {
+               int row_count = eina_list_count(vals);
+
+               for (int i = 0 ; i < row_count ; i++) {
+                       Eina_List* row_vals = eina_list_nth(vals, i);
+                       chat_name = (char*)eina_list_nth(row_vals, 0);
+                       if(!chat_name) {
+                               //("DB Error");
+                               return EINA_FALSE;
+                       } else {
+                               break;
+                       }
+                       eina_list_free(row_vals);
                }
-               free(where_clause);
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
+               eina_list_free(vals);
+       }
+
+       if(chat_name) {
+               free(chat_name);
+               return EINA_TRUE;
        }
+
+       return EINA_FALSE;
 }
 
-void insert_media_info_to_db(struct tgl_message *M, char* file_path)
+void insert_buddy_into_db(char* table_name, struct tgl_user* U)
 {
-       if(!M) {
+       if(!U) {
                return;
        }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       char* table_name = MEDIA_INFO_TABLE_NAME;
 
-       if(db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
-
-
-               /********************************************************************/
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
-
-
-               /********************************************************************/
-
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_ID);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PRINT_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_STRUCTURE_VERSION);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_ID);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_FIRST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_REAL_LAST_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_USER_NAME);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_ONLINE_STATUS);
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_LAST_SEEN_TIME);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, &(U->id.id));
+       if(U->print_name)
+               col_values = eina_list_append(col_values, U->print_name);
+       else
+               col_values = eina_list_append(col_values, "");
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_values = eina_list_append(col_values, &(U->structure_version));
+       col_values = eina_list_append(col_values, "");
+       col_values = eina_list_append(col_values, &(U->photo_id));
 
+       if(U->first_name)
+               col_values = eina_list_append(col_values, U->first_name);
+       else
+               col_values = eina_list_append(col_values, "");
+       if(U->last_name)
+               col_values = eina_list_append(col_values, U->last_name);
+       else
+               col_values = eina_list_append(col_values, "");
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       if(U->phone)
+               col_values = eina_list_append(col_values, U->phone);
+       else
+               col_values = eina_list_append(col_values, "");
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_values = eina_list_append(col_values, &(U->access_hash));
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       if(U->real_first_name)
+               col_values = eina_list_append(col_values, U->real_first_name);
+       else
+               col_values = eina_list_append(col_values, "");
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       if(U->real_last_name)
+               col_values = eina_list_append(col_values, U->real_last_name);
+       else
+               col_values = eina_list_append(col_values, "");
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       if(U->username)
+               col_values = eina_list_append(col_values, U->username);
+       else
+               col_values = eina_list_append(col_values, "");
 
-               Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, &(U->status.online));
+       col_values = eina_list_append(col_values, &(U->status.when));
+
+       Eina_Bool ret = insert_table(table_name, col_names, col_types,col_values);
+       if(!ret) {
+               // already exist. So update the table
+               char* where_clause = NULL;
+               char user_id_str[50];
+               sprintf(user_id_str,"%d",U->id.id);
+               where_clause = (char*)malloc(strlen(USER_INFO_TABLE_USER_ID) + strlen(" = ") + strlen(user_id_str) + 1);
+               strcpy(where_clause, USER_INFO_TABLE_USER_ID);
+               strcat(where_clause, " = ");
+               strcat(where_clause, user_id_str);
+               ret = update_table(table_name, col_names, col_types, col_values, where_clause);
+       } else {
+               // successfully inserted.
+       }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
+
+}
+
+void insert_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
+{
+       if (!chat_info) {
+               return;
+       }
+       char* table_name = CHAT_INFO_TABLE_NAME;
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, &(chat_info->id.id));
+       col_values = eina_list_append(col_values, &(chat_info->flags));
+
+       if(chat_info->print_title)
+               col_values = eina_list_append(col_values, chat_info->print_title);
+       else
+               col_values = eina_list_append(col_values, "");
+
+       col_values = eina_list_append(col_values, &(chat_info->structure_version));
+
+       long long photo_id = chat_info->photo.id;
 
+       char photo_id_str[50];
+       sprintf(photo_id_str, "%lld", photo_id);
+       col_values = eina_list_append(col_values, photo_id_str);
 
-               int media_type = M->media.type;
+       if (photo_path) {
+               col_values = eina_list_append(col_values, photo_path);
+       } else {
+               col_values = eina_list_append(col_values, " ");
+       }
 
-               if (media_type == tgl_message_media_photo) {
+       if(chat_info->title)
+               col_values = eina_list_append(col_values, chat_info->title);
+       else
+               col_values = eina_list_append(col_values, "");
 
-                       char photo_id_str[50];
-                       sprintf(photo_id_str, "%lld", M->media.photo.id);
+       col_values = eina_list_append(col_values, &(chat_info->users_num));
+       col_values = eina_list_append(col_values, &(chat_info->user_list_size));
+       col_values = eina_list_append(col_values, &(chat_info->user_list_version));
 
-                       col_values = eina_list_append(col_values, photo_id_str);
-                       col_values = eina_list_append(col_values, &(media_type));
+       int inventor_id = 0;
+       if (chat_info->user_list) {
+               inventor_id = chat_info->user_list[0].inviter_id;
+       }
 
+       col_values = eina_list_append(col_values, &(inventor_id));
+
+       /****** add chat users list ********/
+       char* full_ids = NULL;
+       if (chat_info->user_list) {
+               char* chat_user_ids[chat_info->user_list_size];
+               int total_len = 0;
+               for (int i = 0; i < chat_info->user_list_size; i++) {
+                       char temp_user_id[15];
+                       int temp_id = chat_info->user_list[i].user_id;
+                       sprintf(temp_user_id,"%d",temp_id);
+                       chat_user_ids[i] = (char*)malloc(strlen(temp_user_id) + 1);
+                       strcpy(chat_user_ids[i], temp_user_id);
+                       total_len = total_len + strlen(temp_user_id);
+                       total_len = total_len + 1; // delimitor
+               }
+
+               full_ids = (char*)malloc(total_len);
+               for (int i = 0; i < chat_info->user_list_size; i++) {
+                       if (i == 0) {
+                               strcpy(full_ids, chat_user_ids[i]);
+                       } else {
+                               strcat(full_ids, chat_user_ids[i]);
+                       }
+                       if (i < chat_info->user_list_size - 1) {
+                               strcat(full_ids, ",");
+                       }
+                       free(chat_user_ids[i]);
+               }
+       } else {
+               full_ids = (char*)malloc(2);
+               strcpy(full_ids, " ");
+       }
 
-                       char access_hash_str[50];
-                       sprintf(access_hash_str, "%lld", M->media.photo.access_hash);
+       col_values = eina_list_append(col_values, full_ids);
+       /****** add chat users list ********/
 
-                       col_values = eina_list_append(col_values, access_hash_str);
-                       col_values = eina_list_append(col_values, &(M->media.photo.user_id));
-                       col_values = eina_list_append(col_values, &(M->media.photo.date));
+       col_values = eina_list_append(col_values, &(chat_info->date));
+       col_values = eina_list_append(col_values, &(chat_info->version));
+       col_values = eina_list_append(col_values, &(chat_info->admin_id));
 
-                       if(M->media.photo.caption)
-                               col_values = eina_list_append(col_values, M->media.photo.caption);
-                       else
-                               col_values = eina_list_append(col_values, "");
+       Eina_Bool ret = insert_table(table_name, col_names, col_types,col_values);
+       if(!ret) {
+               // already exist. So update the table
+               char* where_clause = NULL;
+               char chat_id_str[50];
+               sprintf(chat_id_str,"%d", chat_info->id.id);
+               where_clause = (char*)malloc(strlen(CHAT_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(chat_id_str) + 1);
+               strcpy(where_clause, CHAT_INFO_TABLE_CHAT_ID);
+               strcat(where_clause, " = ");
+               strcat(where_clause, chat_id_str);
+               ret = update_table(table_name, col_names, col_types, col_values, where_clause);
+       } else {
 
-                       double longitude = M->media.photo.geo.longitude;
-                       double latitude = M->media.photo.geo.latitude;
+       }
+       free(full_ids);
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
+}
 
-                       char long_str[50];
-                       sprintf(long_str,"%lf",longitude);
+void update_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
+{
+       if (!chat_info) {
+               return;
+       }
 
-                       char lat_str[50];
-                       sprintf(lat_str,"%lf",latitude);
+       char* table_name = CHAT_INFO_TABLE_NAME;
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_FLAGS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PRINT_TITLE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_STRUCT_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_ID);
+       if (photo_path) {
+               col_names = eina_list_append(col_names, CHAT_INFO_TABLE_PHOTO_PATH);
+       }
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_TITLE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_NO_OF_USERS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_SIZE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_USER_LIST_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_INVITER_ID);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_CHAT_USERS);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_VERSION);
+       col_names = eina_list_append(col_names, CHAT_INFO_TABLE_ADMIN_ID);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       if (photo_path) {
+               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       }
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, &(chat_info->id.id));
+       col_values = eina_list_append(col_values, &(chat_info->flags));
+
+       if(chat_info->print_title)
+               col_values = eina_list_append(col_values, chat_info->print_title);
+       else
+               col_values = eina_list_append(col_values, "");
 
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, &(M->media.photo.sizes_num));
+       col_values = eina_list_append(col_values, &(chat_info->structure_version));
 
+       long long photo_id = chat_info->photo.id;
 
-                       int i = 0;
-                       for (i = 0; i < M->media.photo.sizes_num; i++) {
-                               //struct tgl_photo_size photo_size = M->media.photo->sizes[i];
+       char photo_id_str[50];
+       sprintf(photo_id_str, "%lld", photo_id);
+       col_values = eina_list_append(col_values, photo_id_str);
 
-                               char* photo_type = M->media.photo.sizes[i].type;
-                               if(photo_type) {
-                                       col_values = eina_list_append(col_values, photo_type);
-                               } else {
-                                       col_values = eina_list_append(col_values, "");
-                               }
+       if (photo_path) {
+               col_values = eina_list_append(col_values, photo_path);
+       }
 
-                               int photo_loc_dc = M->media.photo.sizes[i].loc.dc;
-                               col_values = eina_list_append(col_values, &photo_loc_dc);
+       if(chat_info->title)
+               col_values = eina_list_append(col_values, chat_info->title);
+       else
+               col_values = eina_list_append(col_values, "");
 
+       col_values = eina_list_append(col_values, &(chat_info->users_num));
+       col_values = eina_list_append(col_values, &(chat_info->user_list_size));
+       col_values = eina_list_append(col_values, &(chat_info->user_list_version));
 
+       int inventor_id = 0;
+       if (chat_info->user_list) {
+               inventor_id = chat_info->user_list[0].inviter_id;
+       }
 
-                               char photo_loc_vol_str[50];
-                               sprintf(photo_loc_vol_str, "%lld", M->media.photo.sizes[i].loc.volume);
+       col_values = eina_list_append(col_values, &(inventor_id));
+
+       /****** add chat users list ********/
+       char* full_ids = NULL;
+       if (chat_info->user_list) {
+               char* chat_user_ids[chat_info->user_list_size];
+               int total_len = 0;
+               for (int i = 0; i < chat_info->user_list_size; i++) {
+                       char temp_user_id[15];
+                       int temp_id = chat_info->user_list[i].user_id;
+                       sprintf(temp_user_id,"%d",temp_id);
+                       chat_user_ids[i] = (char*)malloc(strlen(temp_user_id) + 1);
+                       strcpy(chat_user_ids[i], temp_user_id);
+                       total_len = total_len + strlen(temp_user_id);
+                       total_len = total_len + 1; // delimitor
+               }
+
+               full_ids = (char*)malloc(total_len);
+               for (int i = 0; i < chat_info->user_list_size; i++) {
+                       if (i == 0) {
+                               strcpy(full_ids, chat_user_ids[i]);
+                       } else {
+                               strcat(full_ids, chat_user_ids[i]);
+                       }
+                       if (i < chat_info->user_list_size - 1) {
+                               strcat(full_ids, ",");
+                       }
+               }
+       } else {
+               full_ids = (char*)malloc(2);
+               strcpy(full_ids, " ");
+       }
 
-                               col_values = eina_list_append(col_values, photo_loc_vol_str);
+       col_values = eina_list_append(col_values, full_ids);
+       /****** add chat users list ********/
 
-                               int photo_loc_id = M->media.photo.sizes[i].loc.local_id;
-                               col_values = eina_list_append(col_values, &photo_loc_id);
+       col_values = eina_list_append(col_values, &(chat_info->date));
+       col_values = eina_list_append(col_values, &(chat_info->version));
+       col_values = eina_list_append(col_values, &(chat_info->admin_id));
 
+       char* where_clause = NULL;
 
-                               char photo_loc_sec_str[50];
-                               sprintf(photo_loc_sec_str, "%lld", M->media.photo.sizes[i].loc.secret);
+       char chat_id_str[50];
+       sprintf(chat_id_str,"%d",chat_info->id.id);
+       where_clause = (char*)malloc(strlen(CHAT_INFO_TABLE_CHAT_ID) + strlen(" = ") + strlen(chat_id_str) + 1);
+       strcpy(where_clause, CHAT_INFO_TABLE_CHAT_ID);
+       strcat(where_clause, " = ");
+       strcat(where_clause, chat_id_str);
 
-                               col_values = eina_list_append(col_values, photo_loc_sec_str);
+       Eina_Bool ret = update_table(table_name, col_names, col_types, col_values, where_clause);
 
-                               int photo_width = M->media.photo.sizes[i].w;
-                               col_values = eina_list_append(col_values, &photo_width);
+       if(!ret) {
+               // error handling
+       } else {
 
-                               int photo_height = M->media.photo.sizes[i].h;
-                               col_values = eina_list_append(col_values, &photo_height);
+       }
 
-                               int pic_size = M->media.photo.sizes[i].size;
-                               col_values = eina_list_append(col_values, &pic_size);
+       free(full_ids);
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
+}
 
-                               char* photo_data = M->media.photo.sizes[i].data;
-                               if (photo_data) {
-                                       col_values = eina_list_append(col_values, photo_data);
-                               } else {
-                                       col_values = eina_list_append(col_values, "");
-                               }
-                       }
+void update_buddy_pic_db(char* file_path, char* table_name, int id)
+{
+       if (!file_path || !table_name) {
+               return;
+       }
 
-                       int j = i;
-                       for (j = i; j < 4; j++) {
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
 
-                               char* photo_type = "";
-                               col_values = eina_list_append(col_values, photo_type);
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
 
-                               int photo_loc_dc = -1;
-                               col_values = eina_list_append(col_values, &photo_loc_dc);
+       Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, file_path);
 
-                               col_values = eina_list_append(col_values, "");
+       char* where_clause = NULL;
 
-                               int photo_loc_id = -1;
-                               col_values = eina_list_append(col_values, &photo_loc_id);
+       char usr_str[50];
+       sprintf(usr_str,"%d",id);
+       where_clause = (char*)malloc(strlen(USER_INFO_TABLE_USER_ID) + strlen(" = ") + strlen(usr_str) + 1);
+       strcpy(where_clause, USER_INFO_TABLE_USER_ID);
+       strcat(where_clause, " = ");
+       strcat(where_clause, usr_str);
 
+       Eina_Bool ret = update_table(table_name, col_names, col_types, col_values, where_clause);
 
-                               col_values = eina_list_append(col_values, "");
+       if(!ret) {
+               // error handling
+       } else {
 
-                               int photo_width = -1;
-                               col_values = eina_list_append(col_values, &photo_width);
+       }
+       free(where_clause);
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
+}
 
-                               int photo_height = -1;
-                               col_values = eina_list_append(col_values, &photo_height);
+Eina_List* get_buddy_info(int buddy_id)
+{
+       Eina_List* user_details = NULL;
 
-                               int photo_size = -1;
-                               col_values = eina_list_append(col_values, &photo_size);
+       char* table_name = BUDDY_INFO_TABLE_NAME;
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_ID);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PRINT_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_STRUCTURE_VERSION);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_PATH);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHOTO_ID);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_FIRST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_REAL_LAST_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_BUDDY_NAME);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_ONLINE_STATUS);
+       col_names = eina_list_append(col_names, BUDDY_INFO_TABLE_LAST_SEEN_TIME);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER_PRIMARY_KEY);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       char buddy_id_str[50];
+       sprintf(buddy_id_str, "%d", buddy_id);
+
+       char* where_clause = (char*)malloc(strlen(BUDDY_INFO_TABLE_BUDDY_ID) + strlen(" = ") + strlen(buddy_id_str) + 1);
+       strcpy(where_clause, BUDDY_INFO_TABLE_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);
+       free(where_clause);
+
+       eina_list_free(col_names);
+       eina_list_free(col_types);
 
-                               char* photo_data = "";
-                               col_values = eina_list_append(col_values, photo_data);
+       return user_details;
+}
 
-                       }
+void update_receive_media_info_in_db(long long media_id, char* file_path)
+{
+       if(!file_path) {
+               return;
+       }
+       char* table_name = MEDIA_INFO_TABLE_NAME;
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
 
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
 
-               } else if (media_type == tgl_message_media_document) {
+       Eina_List* col_values = NULL;
+       col_values = eina_list_append(col_values, file_path);
 
-                       col_values = eina_list_append(col_values, &(M->media.document.id));
-                       col_values = eina_list_append(col_values, &(media_type));
-                       col_values = eina_list_append(col_values, &(M->media.document.access_hash));
-                       col_values = eina_list_append(col_values, &(M->media.document.user_id));
-                       col_values = eina_list_append(col_values, &(M->media.document.date));
+       char media_id_str[50];
+       sprintf(media_id_str, "%lld", media_id);
 
-                       if(M->media.document.caption)
-                               col_values = eina_list_append(col_values, M->media.document.caption);
-                       else
-                               col_values = eina_list_append(col_values, "");
+       char* where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = '") + strlen(media_id_str) + strlen("'") + 1);
+       strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID);
+       strcat(where_clause, " = '");
+       strcat(where_clause, media_id_str);
+       strcat(where_clause, "'");
+
+       Eina_Bool ret = update_table(table_name, col_names, col_types, col_values, where_clause);
+
+       if(!ret) {
+               // error handling
+       } else {
+
+       }
+       free(where_clause);
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
 
-                       double longitude = 0.0f;
-                       double latitude = 0.0f;
+}
 
-                       char long_str[50];
-                       sprintf(long_str,"%lf",longitude);
+void insert_media_info_to_db(struct tgl_message *M, char* file_path)
+{
+       if(!M) {
+               return;
+       }
 
-                       char lat_str[50];
-                       sprintf(lat_str,"%lf",latitude);
+       char* table_name = MEDIA_INFO_TABLE_NAME;
 
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, &(M->media.document.size));
 
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
+
+
+       /********************************************************************/
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
+
+
+       /********************************************************************/
+
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       Eina_List* col_values = NULL;
+
+
+       int media_type = M->media.type;
+
+       if (media_type == tgl_message_media_photo) {
 
-                       for (int j = 0; j < 4; j++) {
+               char photo_id_str[50];
+               sprintf(photo_id_str, "%lld", M->media.photo.id);
 
-                               char *photo_type;
-                               int *photo_loc_dc;
-                               int *photo_loc_id;
-                               int *photo_width;
-                               int *photo_height;
-                               int *photo_size;
-                               char *photo_data;
+               col_values = eina_list_append(col_values, photo_id_str);
+               col_values = eina_list_append(col_values, &(media_type));
 
-                               photo_type = strdup(" ");
-                               photo_loc_dc = malloc(sizeof(*photo_loc_dc));
-                               *photo_loc_dc = -1;
-                               photo_loc_id = malloc(sizeof(*photo_loc_id));
-                               *photo_loc_id = -1;
-                               photo_width = malloc(sizeof(*photo_width));
-                               *photo_width = -1;
-                               photo_height = malloc(sizeof(*photo_height));
-                               *photo_height = -1;
-                               photo_size = malloc(sizeof(*photo_size));
-                               *photo_size = -1;
-                               photo_data = strdup(" ");
 
-                               col_values = eina_list_append(col_values, photo_type);
-                               col_values = eina_list_append(col_values, photo_loc_dc);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_loc_id);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_width);
-                               col_values = eina_list_append(col_values, photo_height);
-                               col_values = eina_list_append(col_values, photo_size);
-                               col_values = eina_list_append(col_values, photo_data);
+               char access_hash_str[50];
+               sprintf(access_hash_str, "%lld", M->media.photo.access_hash);
 
-                       }
-               } else {
-                       // To be checked
-                       int dummy = 0;
-                       col_values = eina_list_append(col_values, &(dummy));
-                       col_values = eina_list_append(col_values, &(media_type));
-                       col_values = eina_list_append(col_values, &(dummy));
-                       col_values = eina_list_append(col_values, &(dummy));
-                       col_values = eina_list_append(col_values, &(dummy));
+               col_values = eina_list_append(col_values, access_hash_str);
+               col_values = eina_list_append(col_values, &(M->media.photo.user_id));
+               col_values = eina_list_append(col_values, &(M->media.photo.date));
 
+               if(M->media.photo.caption)
+                       col_values = eina_list_append(col_values, M->media.photo.caption);
+               else
                        col_values = eina_list_append(col_values, "");
 
-                       double longitude = 0.0f;
-                       double latitude = 0.0f;
-
-                       char long_str[50];
-                       sprintf(long_str,"%lf",longitude);
+               double longitude = M->media.photo.geo.longitude;
+               double latitude = M->media.photo.geo.latitude;
 
-                       char lat_str[50];
-                       sprintf(lat_str,"%lf",latitude);
+               char long_str[50];
+               sprintf(long_str,"%lf",longitude);
 
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, &(dummy));
+               char lat_str[50];
+               sprintf(lat_str,"%lf",latitude);
 
-                       for (int j = 0; j < 4; j++) {
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, &(M->media.photo.sizes_num));
 
-                               char* photo_type = strdup(" ");
-                               int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
-                               int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
-                               int *photo_loc_id = malloc(sizeof(*photo_loc_id));
-                               int *photo_width = malloc(sizeof(*photo_width));
-                               int *photo_height = malloc(sizeof(*photo_height));
-                               int *photo_size = malloc(sizeof(*photo_size));
-                               char* photo_data = strdup(" ");
 
-                               *photo_loc_dc = -1;
-                               *photo_loc_vol = -1;
-                               *photo_loc_id = -1;
-                               *photo_width = -1;
-                               *photo_height = -1;
-                               *photo_size = -1;
+               int i = 0;
+               for (i = 0; i < M->media.photo.sizes_num; i++) {
+                       //struct tgl_photo_size photo_size = M->media.photo->sizes[i];
 
+                       char* photo_type = M->media.photo.sizes[i].type;
+                       if(photo_type) {
                                col_values = eina_list_append(col_values, photo_type);
-                               col_values = eina_list_append(col_values, photo_loc_dc);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_loc_id);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_width);
-                               col_values = eina_list_append(col_values, photo_height);
-                               col_values = eina_list_append(col_values, photo_size);
-                               col_values = eina_list_append(col_values, photo_data);
+                       } else {
+                               col_values = eina_list_append(col_values, "");
                        }
-               }
 
-               if(M->media.phone) {
-                       //col_values = eina_list_append(col_values, M->media.phone);
-                       col_values = eina_list_append(col_values, "");
-               } else {
-                       col_values = eina_list_append(col_values, "");
-               }
+                       int photo_loc_dc = M->media.photo.sizes[i].loc.dc;
+                       col_values = eina_list_append(col_values, &photo_loc_dc);
 
-               if(M->media.first_name) {
-                       //col_values = eina_list_append(col_values, M->media.first_name);
-                       col_values = eina_list_append(col_values, "");
-               } else {
-                       col_values = eina_list_append(col_values, "");
-               }
 
-               if(M->media.last_name) {
-                       //col_values = eina_list_append(col_values, M->media.last_name);
-                       col_values = eina_list_append(col_values, "");
-               } else {
-                       col_values = eina_list_append(col_values, "");
-               }
 
-               if(file_path) {
-                       col_values = eina_list_append(col_values, file_path);
-               } else {
-                       col_values = eina_list_append(col_values, "");
-               }
+                       char photo_loc_vol_str[50];
+                       sprintf(photo_loc_vol_str, "%lld", M->media.photo.sizes[i].loc.volume);
 
-               Eina_Bool ret = insert_table(db, table_name, col_names, col_types,col_values);
-               if(!ret) {
-                       //("error: database creation failed");
-               } else {
+                       col_values = eina_list_append(col_values, photo_loc_vol_str);
 
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
-       }
-}
+                       int photo_loc_id = M->media.photo.sizes[i].loc.local_id;
+                       col_values = eina_list_append(col_values, &photo_loc_id);
 
-void update_sent_media_info_in_db(struct tgl_message *M, long long unique_val)
-{
-       if(!M) {
-               return;
-       }
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       char* table_name = MEDIA_INFO_TABLE_NAME;
 
-       if(db) {
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
-
-
-               /********************************************************************/
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
-
-
-               /********************************************************************/
-
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
+                       char photo_loc_sec_str[50];
+                       sprintf(photo_loc_sec_str, "%lld", M->media.photo.sizes[i].loc.secret);
 
+                       col_values = eina_list_append(col_values, photo_loc_sec_str);
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+                       int photo_width = M->media.photo.sizes[i].w;
+                       col_values = eina_list_append(col_values, &photo_width);
 
+                       int photo_height = M->media.photo.sizes[i].h;
+                       col_values = eina_list_append(col_values, &photo_height);
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+                       int pic_size = M->media.photo.sizes[i].size;
+                       col_values = eina_list_append(col_values, &pic_size);
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+                       char* photo_data = M->media.photo.sizes[i].data;
+                       if (photo_data) {
+                               col_values = eina_list_append(col_values, photo_data);
+                       } else {
+                               col_values = eina_list_append(col_values, "");
+                       }
+               }
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+               int j = i;
+               for (j = i; j < 4; j++) {
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+                       char* photo_type = "";
+                       col_values = eina_list_append(col_values, photo_type);
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+                       int photo_loc_dc = -1;
+                       col_values = eina_list_append(col_values, &photo_loc_dc);
 
+                       col_values = eina_list_append(col_values, "");
 
-               Eina_List* col_values = NULL;
+                       int photo_loc_id = -1;
+                       col_values = eina_list_append(col_values, &photo_loc_id);
 
 
-               int media_type = M->media.type;
+                       col_values = eina_list_append(col_values, "");
 
-               if (media_type == tgl_message_media_photo) {
+                       int photo_width = -1;
+                       col_values = eina_list_append(col_values, &photo_width);
 
-                       char photo_id_str[50];
-                       sprintf(photo_id_str, "%lld", M->media.photo.id);
+                       int photo_height = -1;
+                       col_values = eina_list_append(col_values, &photo_height);
 
-                       col_values = eina_list_append(col_values, photo_id_str);
-                       col_values = eina_list_append(col_values, &(media_type));
+                       int photo_size = -1;
+                       col_values = eina_list_append(col_values, &photo_size);
 
+                       char* photo_data = "";
+                       col_values = eina_list_append(col_values, photo_data);
 
-                       char access_hash_str[50];
-                       sprintf(access_hash_str, "%lld", M->media.photo.access_hash);
+               }
 
-                       col_values = eina_list_append(col_values, access_hash_str);
-                       col_values = eina_list_append(col_values, &(M->media.photo.user_id));
-                       col_values = eina_list_append(col_values, &(M->media.photo.date));
 
-                       if(M->media.photo.caption)
-                               col_values = eina_list_append(col_values, M->media.photo.caption);
-                       else
-                               col_values = eina_list_append(col_values, "");
+       } else if (media_type == tgl_message_media_document) {
 
-                       double longitude = M->media.photo.geo.longitude;
-                       double latitude = M->media.photo.geo.latitude;
+               col_values = eina_list_append(col_values, &(M->media.document.id));
+               col_values = eina_list_append(col_values, &(media_type));
+               col_values = eina_list_append(col_values, &(M->media.document.access_hash));
+               col_values = eina_list_append(col_values, &(M->media.document.user_id));
+               col_values = eina_list_append(col_values, &(M->media.document.date));
 
-                       char long_str[50];
-                       sprintf(long_str,"%lf",longitude);
+               if(M->media.document.caption)
+                       col_values = eina_list_append(col_values, M->media.document.caption);
+               else
+                       col_values = eina_list_append(col_values, "");
 
-                       char lat_str[50];
-                       sprintf(lat_str,"%lf",latitude);
+               double longitude = 0.0f;
+               double latitude = 0.0f;
+
+               char long_str[50];
+               sprintf(long_str,"%lf",longitude);
+
+               char lat_str[50];
+               sprintf(lat_str,"%lf",latitude);
+
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, &(M->media.document.size));
+
+
+               for (int j = 0; j < 4; j++) {
+
+                       char *photo_type;
+                       int *photo_loc_dc;
+                       int *photo_loc_id;
+                       int *photo_width;
+                       int *photo_height;
+                       int *photo_size;
+                       char *photo_data;
+
+                       photo_type = strdup(" ");
+                       photo_loc_dc = malloc(sizeof(*photo_loc_dc));
+                       *photo_loc_dc = -1;
+                       photo_loc_id = malloc(sizeof(*photo_loc_id));
+                       *photo_loc_id = -1;
+                       photo_width = malloc(sizeof(*photo_width));
+                       *photo_width = -1;
+                       photo_height = malloc(sizeof(*photo_height));
+                       *photo_height = -1;
+                       photo_size = malloc(sizeof(*photo_size));
+                       *photo_size = -1;
+                       photo_data = strdup(" ");
+
+                       col_values = eina_list_append(col_values, photo_type);
+                       col_values = eina_list_append(col_values, photo_loc_dc);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_loc_id);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_width);
+                       col_values = eina_list_append(col_values, photo_height);
+                       col_values = eina_list_append(col_values, photo_size);
+                       col_values = eina_list_append(col_values, photo_data);
+
+               }
+       } else {
+               // To be checked
+               int dummy = 0;
+               col_values = eina_list_append(col_values, &(dummy));
+               col_values = eina_list_append(col_values, &(media_type));
+               col_values = eina_list_append(col_values, &(dummy));
+               col_values = eina_list_append(col_values, &(dummy));
+               col_values = eina_list_append(col_values, &(dummy));
 
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, &(M->media.photo.sizes_num));
+               col_values = eina_list_append(col_values, "");
 
+               double longitude = 0.0f;
+               double latitude = 0.0f;
+
+               char long_str[50];
+               sprintf(long_str,"%lf",longitude);
+
+               char lat_str[50];
+               sprintf(lat_str,"%lf",latitude);
+
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, &(dummy));
+
+               for (int j = 0; j < 4; j++) {
+
+                       char* photo_type = strdup(" ");
+                       int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
+                       int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
+                       int *photo_loc_id = malloc(sizeof(*photo_loc_id));
+                       int *photo_width = malloc(sizeof(*photo_width));
+                       int *photo_height = malloc(sizeof(*photo_height));
+                       int *photo_size = malloc(sizeof(*photo_size));
+                       char* photo_data = strdup(" ");
+
+                       *photo_loc_dc = -1;
+                       *photo_loc_vol = -1;
+                       *photo_loc_id = -1;
+                       *photo_width = -1;
+                       *photo_height = -1;
+                       *photo_size = -1;
+
+                       col_values = eina_list_append(col_values, photo_type);
+                       col_values = eina_list_append(col_values, photo_loc_dc);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_loc_id);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_width);
+                       col_values = eina_list_append(col_values, photo_height);
+                       col_values = eina_list_append(col_values, photo_size);
+                       col_values = eina_list_append(col_values, photo_data);
+               }
+       }
 
-                       int i = 0;
-                       for (i = 0; i < M->media.photo.sizes_num; i++) {
-                               //struct tgl_photo_size photo_size = M->media.photo->sizes[i];
+       if(M->media.phone) {
+               //col_values = eina_list_append(col_values, M->media.phone);
+               col_values = eina_list_append(col_values, "");
+       } else {
+               col_values = eina_list_append(col_values, "");
+       }
 
-                               char* photo_type = M->media.photo.sizes[i].type;
-                               if(photo_type) {
-                                       col_values = eina_list_append(col_values, photo_type);
-                               } else {
-                                       col_values = eina_list_append(col_values, "");
-                               }
+       if(M->media.first_name) {
+               //col_values = eina_list_append(col_values, M->media.first_name);
+               col_values = eina_list_append(col_values, "");
+       } else {
+               col_values = eina_list_append(col_values, "");
+       }
 
-                               int photo_loc_dc = M->media.photo.sizes[i].loc.dc;
-                               col_values = eina_list_append(col_values, &photo_loc_dc);
+       if(M->media.last_name) {
+               //col_values = eina_list_append(col_values, M->media.last_name);
+               col_values = eina_list_append(col_values, "");
+       } else {
+               col_values = eina_list_append(col_values, "");
+       }
 
+       if(file_path) {
+               col_values = eina_list_append(col_values, file_path);
+       } else {
+               col_values = eina_list_append(col_values, "");
+       }
 
+       Eina_Bool ret = insert_table(table_name, col_names, col_types,col_values);
+       if(!ret) {
+               //("error: database creation failed");
+       } else {
 
-                               char photo_loc_vol_str[50];
-                               sprintf(photo_loc_vol_str, "%lld", M->media.photo.sizes[i].loc.volume);
+       }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
 
-                               col_values = eina_list_append(col_values, photo_loc_vol_str);
+}
 
-                               int photo_loc_id = M->media.photo.sizes[i].loc.local_id;
-                               col_values = eina_list_append(col_values, &photo_loc_id);
+void update_sent_media_info_in_db(struct tgl_message *M, long long unique_val)
+{
+       if(!M) {
+               return;
+       }
+       char* table_name = MEDIA_INFO_TABLE_NAME;
 
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
+
+
+       /********************************************************************/
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
+
+
+       /********************************************************************/
+
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
+
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+
+       Eina_List* col_values = NULL;
+
+
+       int media_type = M->media.type;
+
+       if (media_type == tgl_message_media_photo) {
 
-                               char photo_loc_sec_str[50];
-                               sprintf(photo_loc_sec_str, "%lld", M->media.photo.sizes[i].loc.secret);
+               char photo_id_str[50];
+               sprintf(photo_id_str, "%lld", M->media.photo.id);
 
-                               col_values = eina_list_append(col_values, photo_loc_sec_str);
+               col_values = eina_list_append(col_values, photo_id_str);
+               col_values = eina_list_append(col_values, &(media_type));
 
-                               int photo_width = M->media.photo.sizes[i].w;
-                               col_values = eina_list_append(col_values, &photo_width);
 
-                               int photo_height = M->media.photo.sizes[i].h;
-                               col_values = eina_list_append(col_values, &photo_height);
+               char access_hash_str[50];
+               sprintf(access_hash_str, "%lld", M->media.photo.access_hash);
 
-                               int pic_size = M->media.photo.sizes[i].size;
-                               col_values = eina_list_append(col_values, &pic_size);
+               col_values = eina_list_append(col_values, access_hash_str);
+               col_values = eina_list_append(col_values, &(M->media.photo.user_id));
+               col_values = eina_list_append(col_values, &(M->media.photo.date));
 
-                               char* photo_data = M->media.photo.sizes[i].data;
-                               if (photo_data) {
-                                       col_values = eina_list_append(col_values, photo_data);
-                               } else {
-                                       col_values = eina_list_append(col_values, "");
-                               }
-                       }
+               if(M->media.photo.caption)
+                       col_values = eina_list_append(col_values, M->media.photo.caption);
+               else
+                       col_values = eina_list_append(col_values, "");
 
-                       int j = i;
-                       for (j = i; j < 4; j++) {
-
-                               char* photo_type = strdup(" ");
-                               int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
-                               int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
-                               int *photo_loc_id = malloc(sizeof(*photo_loc_id));
-                               int *photo_width = malloc(sizeof(*photo_width));
-                               int *photo_height = malloc(sizeof(*photo_height));
-                               int *photo_size = malloc(sizeof(*photo_size));
-                               char* photo_data = strdup(" ");
-
-                               *photo_loc_dc = -1;
-                               *photo_loc_vol = -1;
-                               *photo_loc_id = -1;
-                               *photo_width = -1;
-                               *photo_height = -1;
-                               *photo_size = -1;
+               double longitude = M->media.photo.geo.longitude;
+               double latitude = M->media.photo.geo.latitude;
 
-                               col_values = eina_list_append(col_values, photo_type);
-                               col_values = eina_list_append(col_values, photo_loc_dc);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_loc_id);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_width);
-                               col_values = eina_list_append(col_values, photo_height);
-                               col_values = eina_list_append(col_values, photo_size);
-                               col_values = eina_list_append(col_values, photo_data);
+               char long_str[50];
+               sprintf(long_str,"%lf",longitude);
 
-                       }
+               char lat_str[50];
+               sprintf(lat_str,"%lf",latitude);
 
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, &(M->media.photo.sizes_num));
 
-               } else if (media_type == tgl_message_media_document) {
 
-                       col_values = eina_list_append(col_values, &(M->media.document.id));
-                       col_values = eina_list_append(col_values, &(media_type));
-                       col_values = eina_list_append(col_values, &(M->media.document.access_hash));
-                       col_values = eina_list_append(col_values, &(M->media.document.user_id));
-                       col_values = eina_list_append(col_values, &(M->media.document.date));
+               int i = 0;
+               for (i = 0; i < M->media.photo.sizes_num; i++) {
+                       //struct tgl_photo_size photo_size = M->media.photo->sizes[i];
 
-                       if(M->media.document.caption)
-                               col_values = eina_list_append(col_values, M->media.document.caption);
-                       else
+                       char* photo_type = M->media.photo.sizes[i].type;
+                       if(photo_type) {
+                               col_values = eina_list_append(col_values, photo_type);
+                       } else {
                                col_values = eina_list_append(col_values, "");
+                       }
 
-                       double longitude = 0.0f;
-                       double latitude = 0.0f;
-
-                       char long_str[50];
-                       sprintf(long_str,"%lf",longitude);
+                       int photo_loc_dc = M->media.photo.sizes[i].loc.dc;
+                       col_values = eina_list_append(col_values, &photo_loc_dc);
 
-                       char lat_str[50];
-                       sprintf(lat_str,"%lf",latitude);
 
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, &(M->media.document.size));
 
+                       char photo_loc_vol_str[50];
+                       sprintf(photo_loc_vol_str, "%lld", M->media.photo.sizes[i].loc.volume);
 
-                       for (int j = 0; j < 4; j++) {
+                       col_values = eina_list_append(col_values, photo_loc_vol_str);
 
-                               char* photo_type = strdup(" ");
-                               int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
-                               int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
-                               int *photo_loc_id = malloc(sizeof(*photo_loc_id));
-                               int *photo_width = malloc(sizeof(*photo_width));
-                               int *photo_height = malloc(sizeof(*photo_height));
-                               int *photo_size = malloc(sizeof(*photo_size));
-                               char* photo_data = strdup(" ");
+                       int photo_loc_id = M->media.photo.sizes[i].loc.local_id;
+                       col_values = eina_list_append(col_values, &photo_loc_id);
 
-                               *photo_loc_dc = -1;
-                               *photo_loc_vol = -1;
-                               *photo_loc_id = -1;
-                               *photo_width = -1;
-                               *photo_height = -1;
-                               *photo_size = -1;
 
-                               col_values = eina_list_append(col_values, photo_type);
-                               col_values = eina_list_append(col_values, photo_loc_dc);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_loc_id);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_width);
-                               col_values = eina_list_append(col_values, photo_height);
-                               col_values = eina_list_append(col_values, photo_size);
-                               col_values = eina_list_append(col_values, photo_data);
+                       char photo_loc_sec_str[50];
+                       sprintf(photo_loc_sec_str, "%lld", M->media.photo.sizes[i].loc.secret);
 
-                       }
-               } else {
-                       // To be checked
-                       int dummy = 0;
-                       col_values = eina_list_append(col_values, &(dummy));
-                       col_values = eina_list_append(col_values, &(media_type));
-                       col_values = eina_list_append(col_values, &(dummy));
-                       col_values = eina_list_append(col_values, &(dummy));
-                       col_values = eina_list_append(col_values, &(dummy));
+                       col_values = eina_list_append(col_values, photo_loc_sec_str);
 
-                       col_values = eina_list_append(col_values, "");
+                       int photo_width = M->media.photo.sizes[i].w;
+                       col_values = eina_list_append(col_values, &photo_width);
 
-                       double longitude = 0.0f;
-                       double latitude = 0.0f;
+                       int photo_height = M->media.photo.sizes[i].h;
+                       col_values = eina_list_append(col_values, &photo_height);
 
-                       char long_str[50];
-                       sprintf(long_str,"%lf",longitude);
+                       int pic_size = M->media.photo.sizes[i].size;
+                       col_values = eina_list_append(col_values, &pic_size);
 
-                       char lat_str[50];
-                       sprintf(lat_str,"%lf",latitude);
+                       char* photo_data = M->media.photo.sizes[i].data;
+                       if (photo_data) {
+                               col_values = eina_list_append(col_values, photo_data);
+                       } else {
+                               col_values = eina_list_append(col_values, "");
+                       }
+               }
 
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, long_str);
-                       col_values = eina_list_append(col_values, &(dummy));
+               int j = i;
+               for (j = i; j < 4; j++) {
 
-                       for (int j = 0; j < 4; j++) {
+                       char* photo_type = strdup(" ");
+                       int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
+                       int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
+                       int *photo_loc_id = malloc(sizeof(*photo_loc_id));
+                       int *photo_width = malloc(sizeof(*photo_width));
+                       int *photo_height = malloc(sizeof(*photo_height));
+                       int *photo_size = malloc(sizeof(*photo_size));
+                       char* photo_data = strdup(" ");
 
-                               char* photo_type = strdup(" ");
-                               int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
-                               int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
-                               int *photo_loc_id = malloc(sizeof(*photo_loc_id));
-                               int *photo_width = malloc(sizeof(*photo_width));
-                               int *photo_height = malloc(sizeof(*photo_height));
-                               int *photo_size = malloc(sizeof(*photo_size));
-                               char* photo_data = strdup(" ");
+                       *photo_loc_dc = -1;
+                       *photo_loc_vol = -1;
+                       *photo_loc_id = -1;
+                       *photo_width = -1;
+                       *photo_height = -1;
+                       *photo_size = -1;
 
-                               *photo_loc_dc = -1;
-                               *photo_loc_vol = -1;
-                               *photo_loc_id = -1;
-                               *photo_width = -1;
-                               *photo_height = -1;
-                               *photo_size = -1;
+                       col_values = eina_list_append(col_values, photo_type);
+                       col_values = eina_list_append(col_values, photo_loc_dc);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_loc_id);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_width);
+                       col_values = eina_list_append(col_values, photo_height);
+                       col_values = eina_list_append(col_values, photo_size);
+                       col_values = eina_list_append(col_values, photo_data);
 
-                               col_values = eina_list_append(col_values, photo_type);
-                               col_values = eina_list_append(col_values, photo_loc_dc);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_loc_id);
-                               col_values = eina_list_append(col_values, strdup(" "));
-                               col_values = eina_list_append(col_values, photo_width);
-                               col_values = eina_list_append(col_values, photo_height);
-                               col_values = eina_list_append(col_values, photo_size);
-                               col_values = eina_list_append(col_values, photo_data);
-                       }
                }
 
-               if(M->media.phone) {
-                       //col_values = eina_list_append(col_values, M->media.phone);
-                       col_values = eina_list_append(col_values, "");
-               } else {
-                       col_values = eina_list_append(col_values, "");
-               }
 
-               if(M->media.first_name) {
-                       //col_values = eina_list_append(col_values, M->media.first_name);
-                       col_values = eina_list_append(col_values, "");
-               } else {
-                       col_values = eina_list_append(col_values, "");
-               }
+       } else if (media_type == tgl_message_media_document) {
 
-               if(M->media.last_name) {
-                       //col_values = eina_list_append(col_values, M->media.last_name);
-                       col_values = eina_list_append(col_values, "");
-               } else {
+               col_values = eina_list_append(col_values, &(M->media.document.id));
+               col_values = eina_list_append(col_values, &(media_type));
+               col_values = eina_list_append(col_values, &(M->media.document.access_hash));
+               col_values = eina_list_append(col_values, &(M->media.document.user_id));
+               col_values = eina_list_append(col_values, &(M->media.document.date));
+
+               if(M->media.document.caption)
+                       col_values = eina_list_append(col_values, M->media.document.caption);
+               else
                        col_values = eina_list_append(col_values, "");
-               }
 
+               double longitude = 0.0f;
+               double latitude = 0.0f;
+
+               char long_str[50];
+               sprintf(long_str,"%lf",longitude);
+
+               char lat_str[50];
+               sprintf(lat_str,"%lf",latitude);
+
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, &(M->media.document.size));
+
+
+               for (int j = 0; j < 4; j++) {
+
+                       char* photo_type = strdup(" ");
+                       int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
+                       int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
+                       int *photo_loc_id = malloc(sizeof(*photo_loc_id));
+                       int *photo_width = malloc(sizeof(*photo_width));
+                       int *photo_height = malloc(sizeof(*photo_height));
+                       int *photo_size = malloc(sizeof(*photo_size));
+                       char* photo_data = strdup(" ");
+
+                       *photo_loc_dc = -1;
+                       *photo_loc_vol = -1;
+                       *photo_loc_id = -1;
+                       *photo_width = -1;
+                       *photo_height = -1;
+                       *photo_size = -1;
+
+                       col_values = eina_list_append(col_values, photo_type);
+                       col_values = eina_list_append(col_values, photo_loc_dc);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_loc_id);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_width);
+                       col_values = eina_list_append(col_values, photo_height);
+                       col_values = eina_list_append(col_values, photo_size);
+                       col_values = eina_list_append(col_values, photo_data);
+
+               }
+       } else {
+               // To be checked
+               int dummy = 0;
+               col_values = eina_list_append(col_values, &(dummy));
+               col_values = eina_list_append(col_values, &(media_type));
+               col_values = eina_list_append(col_values, &(dummy));
+               col_values = eina_list_append(col_values, &(dummy));
+               col_values = eina_list_append(col_values, &(dummy));
 
-               char* where_clause = NULL;
-               if(unique_val != 0 ) {
-                       char usr_str[50];
-                       sprintf(usr_str,"%lld",unique_val);
-                       where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = '") + strlen(usr_str) + strlen("'") + 1);
-                       strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID);
-                       strcat(where_clause, " = '");
-                       strcat(where_clause, usr_str);
-                       strcat(where_clause, "'");
-               } else {
-                       char usr_str[50];
-                       sprintf(usr_str,"%lld",M->media.photo.id);
-                       where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = '") + strlen(usr_str) + strlen("'") + 1);
-                       strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID);
-                       strcat(where_clause, " = '");
-                       strcat(where_clause, usr_str);
-                       strcat(where_clause, "'");
+               col_values = eina_list_append(col_values, "");
+
+               double longitude = 0.0f;
+               double latitude = 0.0f;
+
+               char long_str[50];
+               sprintf(long_str,"%lf",longitude);
+
+               char lat_str[50];
+               sprintf(lat_str,"%lf",latitude);
+
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, long_str);
+               col_values = eina_list_append(col_values, &(dummy));
+
+               for (int j = 0; j < 4; j++) {
+
+                       char* photo_type = strdup(" ");
+                       int *photo_loc_dc = malloc(sizeof(*photo_loc_dc));
+                       int *photo_loc_vol = malloc(sizeof(*photo_loc_vol));
+                       int *photo_loc_id = malloc(sizeof(*photo_loc_id));
+                       int *photo_width = malloc(sizeof(*photo_width));
+                       int *photo_height = malloc(sizeof(*photo_height));
+                       int *photo_size = malloc(sizeof(*photo_size));
+                       char* photo_data = strdup(" ");
+
+                       *photo_loc_dc = -1;
+                       *photo_loc_vol = -1;
+                       *photo_loc_id = -1;
+                       *photo_width = -1;
+                       *photo_height = -1;
+                       *photo_size = -1;
+
+                       col_values = eina_list_append(col_values, photo_type);
+                       col_values = eina_list_append(col_values, photo_loc_dc);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_loc_id);
+                       col_values = eina_list_append(col_values, strdup(" "));
+                       col_values = eina_list_append(col_values, photo_width);
+                       col_values = eina_list_append(col_values, photo_height);
+                       col_values = eina_list_append(col_values, photo_size);
+                       col_values = eina_list_append(col_values, photo_data);
                }
+       }
 
-               Eina_Bool ret = update_table(db, table_name, col_names, col_types, col_values, where_clause);
+       if(M->media.phone) {
+               //col_values = eina_list_append(col_values, M->media.phone);
+               col_values = eina_list_append(col_values, "");
+       } else {
+               col_values = eina_list_append(col_values, "");
+       }
 
-               if(!ret) {
-                       //("error: database creation failed");
-               } else {
+       if(M->media.first_name) {
+               //col_values = eina_list_append(col_values, M->media.first_name);
+               col_values = eina_list_append(col_values, "");
+       } else {
+               col_values = eina_list_append(col_values, "");
+       }
 
-               }
-               eina_list_free(col_names);
-               eina_list_free(col_types);
-               eina_list_free(col_values);
-               close_database(db);
+       if(M->media.last_name) {
+               //col_values = eina_list_append(col_values, M->media.last_name);
+               col_values = eina_list_append(col_values, "");
+       } else {
+               col_values = eina_list_append(col_values, "");
        }
-}
 
-Eina_List* get_image_details_from_db(long long media_id)
-{
-       Eina_List* vals = NULL;
-       sqlite3* db = create_database(DEFAULT_TG_DATABASE_PATH);
-       if(db) {
-               char* table_name = MEDIA_INFO_TABLE_NAME;
 
+       char* where_clause = NULL;
+       if(unique_val != 0 ) {
                char usr_str[50];
-               sprintf(usr_str,"%lld",media_id);
-               char* where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = ") + strlen(usr_str) + 1);
+               sprintf(usr_str,"%lld",unique_val);
+               where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = '") + strlen(usr_str) + strlen("'") + 1);
                strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID);
-               strcat(where_clause, " = ");
+               strcat(where_clause, " = '");
                strcat(where_clause, usr_str);
+               strcat(where_clause, "'");
+       } else {
+               char usr_str[50];
+               sprintf(usr_str,"%lld",M->media.photo.id);
+               where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = '") + strlen(usr_str) + strlen("'") + 1);
+               strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID);
+               strcat(where_clause, " = '");
+               strcat(where_clause, usr_str);
+               strcat(where_clause, "'");
+       }
 
-               Eina_List* col_types = NULL;
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
+       Eina_Bool ret = update_table(table_name, col_names, col_types, col_values, where_clause);
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       if(!ret) {
+               //("error: database creation failed");
+       } else {
 
+       }
+       eina_list_free(col_names);
+       eina_list_free(col_types);
+       eina_list_free(col_values);
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+}
 
+Eina_List* get_image_details_from_db(long long media_id)
+{
+       Eina_List* vals = NULL;
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       char* table_name = MEDIA_INFO_TABLE_NAME;
 
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-               col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       char usr_str[50];
+       sprintf(usr_str,"%lld",media_id);
+       char* where_clause = (char*)malloc(strlen(MEDIA_INFO_TABLE_MEDIA_ID) + strlen(" = ") + strlen(usr_str) + 1);
+       strcpy(where_clause, MEDIA_INFO_TABLE_MEDIA_ID);
+       strcat(where_clause, " = ");
+       strcat(where_clause, usr_str);
+
+       Eina_List* col_types = NULL;
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_INTEGER);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+       col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
+
+       Eina_List* col_names = NULL;
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
+
+       /********************************************************************/
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
+
+       /********************************************************************/
+
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
+       col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
+
+       vals = get_values_from_table_sync(table_name, col_names, col_types, where_clause);
+
+       eina_list_free(col_types);
+       eina_list_free(col_names);
 
-               Eina_List* col_names = NULL;
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_MEDIA_TYPE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_ACCESS_HASH);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_USER_ID);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_DATE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_CAPTION);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LONGITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LATITUDE);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_SIZES_NUM);
-
-               /********************************************************************/
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE1);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA1);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE2);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA2);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE3);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA3);
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_TYPE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_DC4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_VOL4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_ID4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_WIDTH4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_HEIGHT4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_SIZE4);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHOTO_DATA4);
-
-               /********************************************************************/
-
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_PHONE_NO);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FIRST_NAME);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_LAST_NAME);
-               col_names = eina_list_append(col_names, MEDIA_INFO_TABLE_FILE_PATH);
-
-               vals = get_values_from_table_sync(db, table_name, col_names, col_types, where_clause);
-               close_database(db);
-               eina_list_free(col_types);
-               eina_list_free(col_names);
-       }
        return vals;
 }
 
index 90c5aa9..6b003f7 100644 (file)
@@ -131,11 +131,6 @@ static char* get_downloads_directory (void) {
   return downloads_directory;
 }
 
-static char* get_binlog_file_name(void)
-{
-  return binlog_file_name;
-}
-
 extern void on_user_info_loaded(struct tgl_state *TLSR, void *extra, int success, struct tgl_user *U);
 
 typedef enum TG_ENGINE_STATE {