const char *type;
int col;
- char* where_clause = NULL;
-
- if (wc) {
- where_clause = (char*)malloc(strlen("WHERE ") + strlen(wc) + 1);
- strcpy(where_clause, "WHERE ");
- strcat(where_clause, wc);
- }
-
-
if (!s_info.db || !table_name || !column_names) {
return NULL;
}
query_len += strlen(" FROM ");
query_len += strlen(table_name) + 1;
- query_len += (where_clause ? strlen(where_clause) : 0);
+ query_len += (wc ? strlen(wc) + 7 : 0);
query_len += 2;
query = malloc(query_len);
ptr++;
}
- ptr += sprintf(ptr, " FROM %s %s;", table_name, where_clause ? where_clause : "");
+ ptr += sprintf(ptr, " FROM %s", table_name);
+ if (wc) {
+ ptr += sprintf(ptr, " WHERE %s", wc);
+ }
LOGD("Query: %s", query);
return NULL;
}
-
while(sqlite3_step(stmt) == SQLITE_ROW) {
col = 0;
record = NULL;
}
sqlite3_finalize(stmt);
-
- if (where_clause) {
- free(where_clause);
- where_clause = NULL;
- }
-
return result;
}
-
int tg_db_init(void)
{
int ret;
Eina_List* get_buddy_list_info();
-Eina_List* get_buddy_info(int buddy_id);
+struct tgl_user* get_buddy_info(int buddy_id);
char* get_profile_pic_path(int buddy_id);
+#include <errno.h>
#include "telegramtizen.h"
#include "tg_splash_screen.h"
#include "tg_registration.h"
#include "tg_user_main_view.h"
#include "tg_messaging_view.h"
#include "tg_start_messaging_view.h"
+#include "tg_common.h"
static void
popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
if (item) {
tg_peer_info_s* peer_info = item->use_data;
if(peer_info) {
- //if (peer_info->last_msg_id > 0) {
-
- // get message from message table.
+ tg_main_list_item_s *list_item;
+ // get message from message table.
+ const char *tablename;
+ //tg_message_s* msg = get_message_from_message_table(peer_info->last_msg_id, tablename);
+ tg_message_s *msg;
+
+ tablename = tg_common_to_string("tg_%d_msg", peer_info->peer_id);
+ if (!tablename) {
+ ERR("Unable to convert a string for peer_id");
+ return;
+ }
- char* tablename = get_table_name_from_number(peer_info->peer_id);
- //tg_message_s* msg = get_message_from_message_table(peer_info->last_msg_id, tablename);
- tg_message_s* msg = get_latest_message_from_message_table(tablename);
+ msg = get_latest_message_from_message_table(tablename);
+ if (!msg) {
+ ERR("Unable to get messages");
+ return;
+ }
- if (msg) {
- int media_type = msg->media_type;
- if(media_type == tgl_message_media_none) {
- if (msg->message && strlen(msg->message) > 0) {
- item->last_message = strdup(msg->message);
- } else {
- item->last_message = strdup(" ");
- }
- } else if(media_type == tgl_message_media_photo) {
- item->last_message = strdup("Image");
- } else if(media_type == tgl_message_media_document) {
- item->last_message = strdup("Document");
- } else if(media_type == tgl_message_media_geo) {
- item->last_message = strdup("Geo location");
- } else if(media_type == tgl_message_media_contact) {
- item->last_message = strdup("Contact");
- } else if(media_type == tgl_message_media_unsupported) {
- item->last_message = strdup(" ");
- } else if(media_type == tgl_message_media_photo_encr) {
- item->last_message = strdup("Image encrypted");
- } else if(media_type == tgl_message_media_document_encr) {
- item->last_message = strdup("Document encrypted");
- } else {
- item->last_message = strdup(" ");
+ switch (msg->media_type) {
+ case tgl_message_media_photo:
+ item->last_message = strdup("Image");
+ break;
+ case tgl_message_media_document:
+ item->last_message = strdup("Document");
+ break;
+ case tgl_message_media_geo:
+ item->last_message = strdup("Geo location");
+ break;
+ case tgl_message_media_contact:
+ item->last_message = strdup("Contact");
+ break;
+ case tgl_message_media_photo_encr:
+ item->last_message = strdup("Image encrypted");
+ break;
+ case tgl_message_media_document_encr:
+ item->last_message = strdup("Document encrypted");
+ break;
+ case tgl_message_media_none:
+ if (msg->message && strlen(msg->message) > 0) {
+ item->last_message = strdup(msg->message);
+ if (item->last_message) {
+ break;
}
+ ERR("strdup: %d", errno);
+ }
+ /* Fall through to default in this case */
+ case tgl_message_media_unsupported:
+ default:
+ item->last_message = strdup(" ");
+ break;
+ }
- tg_main_list_item_s* main_list_item = (tg_main_list_item_s*)malloc(sizeof(tg_main_list_item_s));
- main_list_item->peer_id = peer_info->peer_id;
- main_list_item->peer_type = peer_info->peer_type;
- main_list_item->peer_print_name = strdup(peer_info->print_name);
- main_list_item->last_seen_time = msg->date;
- main_list_item->profile_pic = NULL;
- main_list_item->last_msg_id = msg->msg_id;
- main_list_item->last_message = strdup(item->last_message);
- main_list_item->last_msg_type = msg->media_type;
- main_list_item->is_out_msg = msg->out;
- main_list_item->last_msg_status = msg->msg_state;
- main_list_item->number_of_unread_msgs = get_unread_message_count(tablename);
- if (peer_info->photo_path) {
- main_list_item->profile_pic_path = strdup(peer_info->photo_path);
- } else {
- main_list_item->profile_pic_path = NULL;
- }
- main_list_item->user_name_lbl = NULL;
- main_list_item->status_lbl = NULL;
- main_list_item->date_lbl = NULL;
- main_list_item->msg_status_lbl = NULL;
- ad->main_list = eina_list_append(ad->main_list, main_list_item);
-
- // delete message object
- if(msg->message) {
- free(msg->message);
- msg->message = NULL;
- }
+ list_item = (tg_main_list_item_s *)malloc(sizeof(*item));
+ if (!list_item) {
+ ERR("Unable to allocate heap for an item");
+ break;
+ }
+ list_item->peer_id = peer_info->peer_id;
+ list_item->peer_type = peer_info->peer_type;
+ list_item->peer_print_name = strdup(peer_info->print_name);
+ if (!list_item->peer_print_name) {
+ free(list_item);
+ ERR("Unable to allocate heap for print_name");
+ break;
+ }
+ list_item->last_seen_time = msg->date;
+ list_item->profile_pic = NULL;
+ list_item->last_msg_id = msg->msg_id;
+ list_item->last_message = strdup(item->last_message);
+ if (!list_item->last_message) {
+ free(list_item->peer_print_name);
+ free(list_item);
+ ERR("Unable to allocate heap for peer_print_name");
+ break;
+ }
+ list_item->last_msg_type = msg->media_type;
+ list_item->is_out_msg = msg->out;
+ list_item->last_msg_status = msg->msg_state;
+ list_item->number_of_unread_msgs = get_unread_message_count(tablename);
+ if (peer_info->photo_path) {
+ list_item->profile_pic_path = strdup(peer_info->photo_path);
+ } else {
+ list_item->profile_pic_path = NULL;
+ }
+ list_item->user_name_lbl = NULL;
+ list_item->status_lbl = NULL;
+ list_item->date_lbl = NULL;
+ list_item->msg_status_lbl = NULL;
+ ad->main_list = eina_list_append(ad->main_list, list_item);
- if(msg->media_id) {
- free(msg->media_id);
- msg->media_id = NULL;
- }
+ // delete message object
+ if(msg->message) {
+ free(msg->message);
+ msg->message = NULL;
+ }
- free(msg);
- msg = NULL;
+ if(msg->media_id) {
+ free(msg->media_id);
+ msg->media_id = NULL;
+ }
- } else {
- item->last_message = strdup(" ");
- if (peer_info->peer_type == TGL_PEER_CHAT) {
- tg_main_list_item_s* main_list_item = (tg_main_list_item_s*)malloc(sizeof(tg_main_list_item_s));
- main_list_item->peer_id = peer_info->peer_id;
- main_list_item->peer_type = peer_info->peer_type;
- main_list_item->peer_print_name = strdup(peer_info->print_name);
- main_list_item->last_seen_time = peer_info->last_seen_time;
- main_list_item->profile_pic = NULL;
- main_list_item->last_message = strdup(item->last_message);
- main_list_item->last_msg_type = -1;
- main_list_item->is_out_msg = -1;
- main_list_item->last_msg_id = -1;
- main_list_item->last_msg_status = -1;
- main_list_item->number_of_unread_msgs = 0;
- if (peer_info->photo_path) {
- main_list_item->profile_pic_path = strdup(peer_info->photo_path);
- } else {
- main_list_item->profile_pic_path = NULL;
- }
- main_list_item->user_name_lbl = NULL;
- main_list_item->status_lbl = NULL;
- main_list_item->date_lbl = NULL;
- main_list_item->msg_status_lbl = NULL;
- ad->main_list = eina_list_append(ad->main_list, main_list_item);
- }
- }
+ free(msg);
+ msg = NULL;
- if (tablename) {
- free(tablename);
- tablename = NULL;
+ } else {
+ item->last_message = strdup(" ");
+ if (peer_info->peer_type == TGL_PEER_CHAT) {
+ tg_main_list_item_s* item = (tg_main_list_item_s*)malloc(sizeof(tg_main_list_item_s));
+ item->peer_id = peer_info->peer_id;
+ item->peer_type = peer_info->peer_type;
+ item->peer_print_name = strdup(peer_info->print_name);
+ item->last_seen_time = peer_info->last_seen_time;
+ item->profile_pic = NULL;
+ item->last_message = strdup(item->last_message);
+ item->last_msg_type = -1;
+ item->is_out_msg = -1;
+ item->last_msg_id = -1;
+ item->last_msg_status = -1;
+ item->number_of_unread_msgs = 0;
+ if (peer_info->photo_path) {
+ item->profile_pic_path = strdup(peer_info->photo_path);
+ } else {
+ item->profile_pic_path = NULL;
}
- //}
+ item->user_name_lbl = NULL;
+ item->status_lbl = NULL;
+ item->date_lbl = NULL;
+ item->msg_status_lbl = NULL;
+ ad->main_list = eina_list_append(ad->main_list, item);
+ }
}
}
}
{
if (!ad)
return NULL;
+
+
char time_str[256]={0,};
Eina_List* buddy_details_array = get_buddy_info(buddy_id);
if (buddy_details_array && eina_list_count(buddy_details_array) > 0) {
{
return 1;
}
+
+const char *tg_common_to_string(const char *fmt, ...)
+{
+ va_list vp;
+ static char string_buffer[256];
+ int ret;
+
+ va_start(vp, fmt);
+ ret = vsnprintf(string_buffer, sizeof(string_buffer) - 1, fmt, vp);
+ va_end(vp);
+
+ return ret <= 0 ? NULL : string_buffer;
+}
extern void app_get_resource(const char *edj_file_in, char *edj_path_out, int edj_path_max);
+extern const char *tg_common_to_string(const char *fmt, ...);
#endif /* TG_COMMON_H_ */
<privileges>
<privilege>http://tizen.org/privilege/location</privilege>
<privilege>http://tizen.org/privilege/network.get</privilege>
- <privilege>http://tizen.org/privilege/keymanager</privilege>
<privilege>http://tizen.org/privilege/callhistory.read</privilege>
- <privilege>http://tizen.org/privilege/camera</privilege>
<privilege>http://tizen.org/privilege/contact.write</privilege>
- <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
<privilege>http://tizen.org/privilege/content.write</privilege>
<privilege>http://tizen.org/privilege/push</privilege>
- <privilege>http://tizen.org/privilege/network.profile</privilege>
- <privilege>http://tizen.org/privilege/display</privilege>
<privilege>http://tizen.org/privilege/account.read</privilege>
<privilege>http://tizen.org/privilege/externalstorage</privilege>
<privilege>http://tizen.org/privilege/recorder</privilege>
- <privilege>http://tizen.org/privilege/account.write</privilege>
- <privilege>http://tizen.org/privilege/bluetooth</privilege>
<privilege>http://tizen.org/privilege/mediastorage</privilege>
<privilege>http://tizen.org/privilege/internet</privilege>
+ <privilege>http://tizen.org/privilege/callhistory.write</privilege>
+ <privilege>http://tizen.org/privilege/contact.read</privilege>
+ <privilege>http://tizen.org/privilege/keymanager</privilege>
+ <privilege>http://tizen.org/privilege/camera</privilege>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ <privilege>http://tizen.org/privilege/display</privilege>
+ <privilege>http://tizen.org/privilege/network.profile</privilege>
+ <privilege>http://tizen.org/privilege/alarm.get</privilege>
+ <privilege>http://tizen.org/privilege/account.write</privilege>
+ <privilege>http://tizen.org/privilege/bluetooth</privilege>
<privilege>http://tizen.org/privilege/network.set</privilege>
<privilege>http://tizen.org/privilege/notification</privilege>
<privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
- <privilege>http://tizen.org/privilege/callhistory.write</privilege>
- <privilege>http://tizen.org/privilege/contact.read</privilege>
+ <privilege>http://tizen.org/privilege/telephony</privilege>
</privileges>
+ <feature name="http://tizen.org/feature/camera.front.flash">true</feature>
+ <feature name="http://tizen.org/feature/camera.back.flash">true</feature>
+ <feature name="http://tizen.org/feature/network.push">true</feature>
+ <feature name="http://tizen.org/feature/camera">true</feature>
+ <feature name="http://tizen.org/feature/camera.front">true</feature>
+ <feature name="http://tizen.org/feature/network.wifi">true</feature>
+ <feature name="http://tizen.org/feature/screen.size.all">true</feature>
+ <feature name="http://tizen.org/feature/network.telephony">true</feature>
+ <feature name="http://tizen.org/feature/camera.back">true</feature>
</manifest>
#include <malloc.h>
#include <errno.h>
#include <string.h>
-#include "tg_db_manager.h"
+#include <sqlite3.h>
+
+#include "tgl.h"
+#include "tgl-layout.h"
#include "tg_common.h"
+#include "tg_db_manager.h"
int errno;
return EINA_TRUE;
}
-Eina_Bool create_table(const char* table_name, Eina_List* column_names, Eina_List* column_types)
+static inline int create_table_query_to_db(const char *ddl, const char *table_name)
{
- if(!s_info.db || !table_name || ! column_names || !column_types) {
- return EINA_FALSE;
+ sqlite3_stmt *stmt;
+ int ret;
+
+ ret = sqlite3_prepare_v2(s_info.db, ddl, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_DONE) {
+ sqlite3_finalize(stmt);
+ return -EIO;
}
- int ret = 0 ;
- char* err_msg = 0;
- int col_count = eina_list_count(column_names);
-
- int str_len = strlen("CREATE TABLE IF NOT EXISTS ") + strlen(table_name) + strlen("(") + 1;
- char* var_query = (char*)malloc(str_len);
- strcpy(var_query,"CREATE TABLE IF NOT EXISTS ");
- strcat(var_query, table_name);
- strcat(var_query, "(");
-
- for(int col = 0; col < col_count ; col++) {
- char* col_name = eina_list_nth(column_names, col);
- var_query = realloc(var_query, strlen(var_query)+strlen(col_name) + 1);
- strcat(var_query, col_name);
- var_query = realloc(var_query, strlen(var_query)+strlen(" ") + 1);
- strcat(var_query, " ");
- char* col_type = eina_list_nth(column_types, col);
- var_query = realloc(var_query, strlen(var_query)+strlen(col_type) + 1);
- strcat(var_query, col_type);
- if(col < col_count - 1){
- var_query = realloc(var_query, strlen(var_query) + 2);
- strcat(var_query, ",");
- } else {
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, ");");
+ sqlite3_finalize(stmt);
+ return 0;
+}
+
+int tg_db_create_table_user_info(const char *table_name)
+{
+ const char *ddl;
+
+ ddl = "CREATE TABLE ? (" \
+ "user_id INTEGER PRIMARY KEY NOT NULL," \
+ "print_name TEXT," \
+ "structure_version INTEGER," \
+ "photo_path TEXT," \
+ "photo_id INTEGER," \
+ "first_name TEXT," \
+ "last_name TEXT," \
+ "phone TEXT," \
+ "access_hash INTEGER," \
+ "real_first_name TEXT," \
+ "real_last_name TEXT," \
+ "username TEXT," \
+ "online INTEGER," \
+ "last_seen INTEGER)";
+
+ return create_table_query_to_db(ddl, table_name);
+}
+
+int tg_db_create_table_media_info(const char *table_name)
+{
+ const char *ddl;
+ ddl = "CREATE TABLE ? (" \
+ "media_id TEXT," \
+ "media_type INTEGER," \
+ "access_hash TEXT," \
+ "user_id INTEGER," \
+ "date INTEGER," \
+ "caption TEXT," \
+ "longitude TEXT," \
+ "latitude TEXT," \
+ "sizes_num INTEGER," \
+ "photo_type1 TEXT," \
+ "photo_loc_dc1 INTEGER," \
+ "photo_loc_vol1 TEXT," \
+ "photo_loc_id1 INTEGER," \
+ "photo_loc_secret1 TEXT," \
+ "photo_width1 INTEGER," \
+ "photo_height1 INTEGER," \
+ "photo_size1 INTEGER," \
+ "photo_data1 TEXT," \
+ "photo_type2 TEXT," \
+ "photo_loc_dc2 INTEGER," \
+ "photo_loc_vol2 TEXT," \
+ "photo_loc_id2 INTEGER," \
+ "photo_loc_secret2 TEXT," \
+ "photo_width2 INTEGER," \
+ "photo_height2 INTEGER," \
+ "photo_size2 INTEGER," \
+ "photo_data2 TEXT," \
+ "photo_type3 TEXT," \
+ "photo_loc_dc3 INTEGER," \
+ "photo_loc_vol3 TEXT," \
+ "photo_loc_id3 INTEGER," \
+ "photo_loc_secret3 TEXT," \
+ "photo_width3 INTEGER," \
+ "photo_height3 INTEGER," \
+ "photo_size3 INTEGER," \
+ "photo_data3 TEXT," \
+ "photo_type4 TEXT," \
+ "photo_loc_dc4 INTEGER," \
+ "photo_loc_vol4 TEXT," \
+ "photo_loc_id4 INTEGER," \
+ "photo_loc_secret4 TEXT," \
+ "photo_width4 INTEGER," \
+ "photo_height4 INTEGER," \
+ "photo_size4 INTEGER," \
+ "photo_data4 TEXT," \
+ "phone TEXT," \
+ "first_name TEXT," \
+ "last_name TEXT," \
+ "file_path TEXT)";
+ return create_table_query_to_db(ddl, table_name);
+}
+
+int tg_db_update_media_info_filepath(const char *table_name, long long media_id, const char *filepath)
+{
+ const char *dml;
+ const char *id_str;
+ int ret;
+ sqlite3_stmt *stmt;
+
+ dml = "UPDATE ? SET file_path = ? WHERE media_id = ?";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 2, filepath, -1, SQLITE_TRANSIENT);
+ id_str = tg_common_to_string("%lld", media_id);
+ ret = sqlite3_bind_text(stmt, 3, id_str, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
+ return 0;
+}
+
+int tg_db_update_media_info_by_id(const char *table_name, struct tgl_message *msg, long long id)
+{
+ const char *dml;
+ const char *tmp;
+ int ret;
+ sqlite3_stmt *stmt;
+ int i;
+
+ dml = "UPDATE ? SET media_id = ?, "
+ "media_type = ?, "
+ "access_hash = ?, "
+ "user_id = ?, "
+ "date = ?, "
+ "caption = ?, "
+ "longitude = ?, "
+ "latitude = ?, "
+ "sizes_num = ?, "
+ "photo_type1 = ?," \
+ "photo_loc_dc1 = ?," \
+ "photo_loc_vol1 = ?," \
+ "photo_loc_id1 = ?," \
+ "photo_loc_secret1 = ?," \
+ "photo_width1 = ?," \
+ "photo_height1 = ?," \
+ "photo_size1 = ?," \
+ "photo_data1 = ?," \
+ "photo_type2 = ?," \
+ "photo_loc_dc2 = ?," \
+ "photo_loc_vol2 = ?," \
+ "photo_loc_id2 = ?," \
+ "photo_loc_secret2 = ?," \
+ "photo_width2 = ?," \
+ "photo_height2 = ?," \
+ "photo_size2 = ?," \
+ "photo_data2 = ?," \
+ "photo_type3 = ?," \
+ "photo_loc_dc3 = ?," \
+ "photo_loc_vol3 = ?," \
+ "photo_loc_id3 = ?," \
+ "photo_loc_secret3 = ?," \
+ "photo_width3 = ?," \
+ "photo_height3 = ?," \
+ "photo_size3 = ?," \
+ "photo_data3 = ?," \
+ "photo_type4 = ?," \
+ "photo_loc_dc4 = ?," \
+ "photo_loc_vol4 = ?," \
+ "photo_loc_id4 = ?," \
+ "photo_loc_secret4 = ?," \
+ "photo_width4 = ?," \
+ "photo_height4 = ?," \
+ "photo_size4 = ?," \
+ "photo_data4 = ?," \
+ "phone = ?," \
+ "first_name = ?," \
+ "last_name = ? WHERE media_id = ?";
+ /* Except filename */
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ switch (msg->media.type) {
+ case tgl_message_media_photo:
+ tmp = tg_common_to_string("%lld", msg->media.photo.id);
+ ret = sqlite3_bind_text(stmt, 2, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 3, msg->media.type);
+ ret = sqlite3_bind_int64(stmt, 4, msg->media.photo.access_hash);
+ ret = sqlite3_bind_int(stmt, 5, msg->media.photo.user_id);
+ ret = sqlite3_bind_int(stmt, 6, msg->media.photo.date);
+ ret = sqlite3_bind_text(stmt, 7, msg->media.photo.caption, -1, SQLITE_TRANSIENT);
+
+ tmp = tg_common_to_string("%lf", msg->media.photo.geo.longitude);
+ ret = sqlite3_bind_text(stmt, 8, tmp, -1, SQLITE_TRANSIENT);
+
+ tmp = tg_common_to_string("%lf", msg->media.photo.geo.latitude);
+ ret = sqlite3_bind_text(stmt, 9, tmp, -1, SQLITE_TRANSIENT);
+
+ ret = sqlite3_bind_int(stmt, 10, msg->media.photo.sizes_num);
+ for (i = 0; i < 4; i++) {
+ if (i < msg->media.photo.sizes_num) {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), msg->media.photo.sizes[i].type, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), msg->media.photo.sizes[i].loc.dc);
+ tmp = tg_common_to_string("%lld", msg->media.photo.sizes[i].loc.volume);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), msg->media.photo.sizes[i].loc.local_id);
+ tmp = tg_common_to_string("%lld", msg->media.photo.sizes[i].loc.secret);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), msg->media.photo.sizes[i].w);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), msg->media.photo.sizes[i].h);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), msg->media.photo.sizes[i].size);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), msg->media.photo.sizes[i].data, -1, SQLITE_TRANSIENT);
+ } else {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), 0);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ }
}
+ break;
+ case tgl_message_media_document:
+ tmp = tg_common_to_string("%lld", msg->media.document.id);
+ ret = sqlite3_bind_text(stmt, 2, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 3, msg->media.type);
+ ret = sqlite3_bind_int64(stmt, 4, msg->media.document.access_hash);
+ ret = sqlite3_bind_int(stmt, 5, msg->media.document.user_id);
+ ret = sqlite3_bind_int(stmt, 6, msg->media.document.date);
+ ret = sqlite3_bind_text(stmt, 7, msg->media.document.caption, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 8, tmp, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 9, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 10, msg->media.document.size);
+ for (i = 0; i < 4; i++) {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), 0);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ }
+ break;
+ default:
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 2, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 3, msg->media.type);
+ ret = sqlite3_bind_int64(stmt, 4, 0);
+ ret = sqlite3_bind_int(stmt, 5, 0);
+ ret = sqlite3_bind_int(stmt, 6, 0);
+ ret = sqlite3_bind_text(stmt, 7, " ", -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 8, tmp, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 9, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 10, 0);
+ for (i = 0; i < 4; i++) {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), 0);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ }
+ break;
}
- 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;
+ ret = sqlite3_bind_text(stmt, 46, msg->media.phone, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 47, msg->media.first_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 48, msg->media.last_name, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lld", id);
+ ret = sqlite3_bind_text(stmt, 49, tmp, -1, SQLITE_TRANSIENT);
+
+ ret = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
+ if (ret != SQLITE_DONE) {
+ return -EIO;
}
- return EINA_TRUE;
+
+ return 0;
}
-Eina_Bool insert_table(const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values)
+void *tg_db_get_media_info(const char *table_name, long long id, int *media_type)
{
- if(!s_info.db || !table_name || ! column_names || !column_types || !column_values) {
- return EINA_FALSE;
+ void *info = NULL;
+ const char *dml;
+ sqlite3_stmt *stmt;
+ const char *tmp;
+ int ret;
+ int i;
+
+ if (!media_type || !table_name) {
+ return NULL;
}
- int ret = 0 ;
- char* err_msg = 0;
- int col_count = eina_list_count(column_names);
+ dml = "SELECT * FROM ? WHERE media_id = ?";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
- int str_len = strlen("INSERT INTO ") + strlen(table_name) + strlen("(") + 1;
- char* var_query = (char*)malloc(str_len);
- strcpy(var_query,"INSERT INTO ");
- strcat(var_query, table_name);
- strcat(var_query, "(");
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lld", id);
+ ret = sqlite3_bind_text(stmt, 2, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_ROW) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
- for(int col = 0; col < col_count ; col++) {
+ *media_type = sqlite3_column_int(stmt, 1);
+ if (*media_type == tgl_message_media_photo) {
+ struct tgl_photo *photo;
+ const char *tmp;
- char* col_name = eina_list_nth(column_names, col);
- var_query = realloc(var_query, strlen(var_query)+strlen(col_name) + 1);
- strcat(var_query, col_name);
+ photo = calloc(1, sizeof(*photo));
+ if (!photo) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 0);
+ if (tmp && tmp[0] != '\0') {
+ if (sscanf(tmp, "%lld", &photo->id) != 1) {
- if(col < col_count - 1){
- var_query = realloc(var_query, strlen(var_query) + 2);
- strcat(var_query, ",");
- } else {
- var_query = realloc(var_query, strlen(var_query) + strlen(") VALUES (") + 1);
- strcat(var_query, ") VALUES (");
+ }
}
+
+ photo->access_hash = sqlite3_column_int(stmt, 2);
+ photo->user_id = sqlite3_column_int(stmt, 3);
+ photo->date = sqlite3_column_int(stmt, 4);
+ tmp = (const char *)sqlite3_column_text(stmt, 5);
+ if (tmp && tmp[0] != '\0') {
+ photo->caption = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 6);
+ if (tmp && tmp[0] != '\0') {
+ if (sscanf(tmp, "%lf", &photo->geo.longitude) != 1) {
+
+ }
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 7);
+ if (tmp && tmp[0] != '\0') {
+ if (sscanf(tmp, "%lf", &photo->geo.latitude) != 1) {
+
+ }
+ }
+
+ photo->sizes_num = sqlite3_column_int(stmt, 8);
+ photo->sizes = calloc(4, sizeof(*photo->sizes));
+ for (i = 0; i < photo->sizes_num; i++) {
+ if (i < photo->sizes_num) {
+ tmp = (const char *)sqlite3_column_text(stmt, 9 + (i * 9));
+ if (tmp && tmp[0] != '\0') {
+ photo->sizes[i].type = strdup(tmp);
+ }
+ photo->sizes[i].loc.dc = sqlite3_column_int(stmt, 10 + (i * 9));
+ tmp = (const char *)sqlite3_column_text(stmt, 11 + (i * 9));
+ if (tmp && tmp[0] != '\0') {
+ if (sscanf(tmp, "%lld", &photo->sizes[i].loc.volume) != 1) {
+
+ }
+ }
+ photo->sizes[i].loc.local_id = sqlite3_column_int(stmt, 12);
+ tmp = (const char *)sqlite3_column_text(stmt, 13 + (i * 9));
+ if (tmp && tmp[0] != '\0') {
+ if (sscanf(tmp, "%lld", &photo->sizes[i].loc.secret) != 1) {
+
+ }
+ }
+ photo->sizes[i].w = sqlite3_column_int(stmt, 14 + (i * 9));
+ photo->sizes[i].h = sqlite3_column_int(stmt, 15 + (i * 9));
+ photo->sizes[i].size = sqlite3_column_int(stmt, 16 + (i * 9));
+
+ tmp = (const char *)sqlite3_column_text(stmt, 17 + (i * 9));
+ if (tmp && tmp[0] != '\0') {
+ photo->sizes[i].data = strdup(tmp);
+ }
+ }
+ }
+
+ // 45: phone
+ // 46: first_name
+ // 47: last_name
+ // 48: file_path
+ info = photo;
+ } else if (*media_type == tgl_message_media_document) {
+ struct tgl_document *document;
+
+ document = calloc(1, sizeof(*document));
+ if (!document) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 0);
+ if (tmp && tmp[0] != '\0') {
+ if (sscanf(tmp, "%lld", &document->id) != 1) {
+
+ }
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 2);
+ if (tmp && tmp[0] != '\0') {
+ if (sscanf(tmp, "%lld", &document->access_hash) != 1) {
+
+ }
+ }
+
+ document->user_id = sqlite3_column_int(stmt, 3);
+ document->date = sqlite3_column_int(stmt, 4);
+
+ tmp = (const char *)sqlite3_column_text(stmt, 5);
+ if (tmp && tmp[0] != '\0') {
+ document->caption = strdup(tmp);
+ }
+
+ // 6: "longitude TEXT,"
+ // 7: "latitude TEXT,"
+ // 9 ~ 44: Photo informations
+
+ document->size = sqlite3_column_int(stmt, 8);
+
+ // 45 "phone TEXT,"
+ // 46 "first_name TEXT,"
+ // 47 "last_name TEXT,"
+ // 48 "file_path TEXT)"
+
+ info = document;
+ } else {
+ /**
+ * @todo
+ * Handles me
+ */
}
- int col_val_count = eina_list_count(column_values);
+ sqlite3_finalize(stmt);
+ return info;
+}
+
+int tg_db_insert_media_info(const char *table_name, struct tgl_message *msg, const char *filename)
+{
+ const char *dml;
+ const char *tmp;
+ int ret;
+ sqlite3_stmt *stmt;
+ int i;
+
+ dml = "INSERT INTO ? VALUES (" \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?, ?, " \
+ "?, ?, ?, ?)";
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+
+ switch (msg->media.type) {
+ case tgl_message_media_photo:
+ tmp = tg_common_to_string("%lld", msg->media.photo.id);
+ ret = sqlite3_bind_text(stmt, 2, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 3, msg->media.type);
+ ret = sqlite3_bind_int64(stmt, 4, msg->media.photo.access_hash);
+ ret = sqlite3_bind_int(stmt, 5, msg->media.photo.user_id);
+ ret = sqlite3_bind_int(stmt, 6, msg->media.photo.date);
+ ret = sqlite3_bind_text(stmt, 7, msg->media.photo.caption, -1, SQLITE_TRANSIENT);
+
+ tmp = tg_common_to_string("%lf", msg->media.photo.geo.longitude);
+ ret = sqlite3_bind_text(stmt, 8, tmp, -1, SQLITE_TRANSIENT);
+
+ tmp = tg_common_to_string("%lf", msg->media.photo.geo.latitude);
+ ret = sqlite3_bind_text(stmt, 9, tmp, -1, SQLITE_TRANSIENT);
+
+ ret = sqlite3_bind_int(stmt, 10, msg->media.photo.sizes_num);
+ for (i = 0; i < 4; i++) {
+ if (i < msg->media.photo.sizes_num) {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), msg->media.photo.sizes[i].type, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), msg->media.photo.sizes[i].loc.dc);
+ tmp = tg_common_to_string("%lld", msg->media.photo.sizes[i].loc.volume);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), msg->media.photo.sizes[i].loc.local_id);
+ tmp = tg_common_to_string("%lld", msg->media.photo.sizes[i].loc.secret);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), msg->media.photo.sizes[i].w);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), msg->media.photo.sizes[i].h);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), msg->media.photo.sizes[i].size);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), msg->media.photo.sizes[i].data, -1, SQLITE_TRANSIENT);
+ } else {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), 0);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ }
+ }
+ break;
+ case tgl_message_media_document:
+ tmp = tg_common_to_string("%lld", msg->media.document.id);
+ ret = sqlite3_bind_text(stmt, 2, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 3, msg->media.type);
+ ret = sqlite3_bind_int64(stmt, 4, msg->media.document.access_hash);
+ ret = sqlite3_bind_int(stmt, 5, msg->media.document.user_id);
+ ret = sqlite3_bind_int(stmt, 6, msg->media.document.date);
+ ret = sqlite3_bind_text(stmt, 7, msg->media.document.caption, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 8, tmp, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 9, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 10, msg->media.document.size);
+ for (i = 0; i < 4; i++) {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), 0);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ }
+ break;
+ default:
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 2, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 3, msg->media.type);
+ ret = sqlite3_bind_int64(stmt, 4, 0);
+ ret = sqlite3_bind_int(stmt, 5, 0);
+ ret = sqlite3_bind_int(stmt, 6, 0);
+ ret = sqlite3_bind_text(stmt, 7, " ", -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 8, tmp, -1, SQLITE_TRANSIENT);
+ tmp = tg_common_to_string("%lf", 0.0f);
+ ret = sqlite3_bind_text(stmt, 9, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 10, 0);
+ for (i = 0; i < 4; i++) {
+ ret = sqlite3_bind_text(stmt, 11 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 12 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 13 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 14 + (i * 9), 0);
+ tmp = tg_common_to_string("%lld", 0);
+ ret = sqlite3_bind_text(stmt, 15 + (i * 9), tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 16 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 17 + (i * 9), 0);
+ ret = sqlite3_bind_int(stmt, 18 + (i * 9), 0);
+ ret = sqlite3_bind_text(stmt, 19 + (i * 9), " ", -1, SQLITE_TRANSIENT);
+ }
+ break;
+ }
- for(int col = 0; col < col_val_count ; col++) {
+ ret = sqlite3_bind_text(stmt, 46, msg->media.phone, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 47, msg->media.first_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 48, msg->media.last_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 49, filename, -1, SQLITE_TRANSIENT);
- char* col_type = eina_list_nth(column_types, col);
- char* col_value = NULL;
- if(!strcmp(col_type, "INTEGER") || !strcmp(col_type, "INTEGER PRIMARY KEY NOT NULL")) {
- int* tmp_value = eina_list_nth(column_values, col);
+ ret = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
-#if 0
- long long val = *tmp_value;
- col_value = (char*)malloc(50);
- //sprintf(col_value, "%lld", *tmp_value);
- sprintf(col_value, "%lld", val);
-#endif
+ if (ret != SQLITE_DONE) {
+ return -EIO;
+ }
- int act_val = (*tmp_value);
- col_value = (char*)malloc(50);
- sprintf(col_value, "%d", act_val);
+ return 0;
+}
- var_query = realloc(var_query, strlen(var_query)+strlen(col_value) + 1);
- strcat(var_query, col_value);
+int tg_db_create_table_chat_info(const char *table_name)
+{
+ const char *ddl;
+ ddl = "CREATE TABLE ? (" \
+ "chat_id INTEGER PRIMARY KEY NOT NULL," \
+ "flags INTEGER," \
+ "print_title TEXT," \
+ "struct_version INTEGER," \
+ "photo_id TEXT," \
+ "photo_path TEXT," \
+ "title TEXT," \
+ "users_num INTEGER," \
+ "user_list_size INTEGER," \
+ "user_list_version INTEGER," \
+ "inviter_id INTEGER," \
+ "chat_users TEXT," \
+ "date INTEGER," \
+ "version INTEGER," \
+ "admin_id INTEGER)";
+ return create_table_query_to_db(ddl, table_name);
+}
- } else if(!strcmp(col_type, "TEXT") || !strcmp(col_type, "TEXT PRIMARY KEY NOT NULL")) {
- char* tmp_value = eina_list_nth(column_values, col);
- col_value = (char*)malloc(strlen(tmp_value) + 1);
- strcpy(col_value,tmp_value);
+int tg_db_count_chat_info(const char *table_name, struct tgl_chat *chat)
+{
+ const char *dml;
+ sqlite3_stmt *stmt;
+ int ret;
- var_query = realloc(var_query, strlen(var_query)+strlen("'") + 1);
- strcat(var_query, "'");
+ dml = "SELECT COUNT(*) FROM ? WHERE chat_id = ?";
- var_query = realloc(var_query, strlen(var_query)+strlen(col_value) + 1);
- strcat(var_query, col_value);
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 2, chat->id.id);
+ ret = sqlite3_step(stmt);
+ ret = sqlite3_column_int(stmt, 0);
+ sqlite3_finalize(stmt);
+ return ret;
+}
- var_query = realloc(var_query, strlen(var_query)+strlen("'") + 1);
- strcat(var_query, "'");
+int tg_db_update_chat_info(const char *table_name, struct tgl_chat *chat, char *photo)
+{
+ const char *dml;
+ int ret;
+ sqlite3_stmt *stmt;
+ const char *tmp;
+ char *str;
+ int i;
+ int str_len;
+ int str_size;
+
+ dml = "UPDATE ? SET " \
+ "chat_id = ?, " \
+ "flags = ?, " \
+ "print_title = ?, " \
+ "struct_version = ?, " \
+ "photo_id = ?, " \
+ "photo_path = ?, " \
+ "title = ?, " \
+ "users_num = ?, " \
+ "user_list_size = ?, " \
+ "user_list_version = ?, " \
+ "inviter_id = ?, " \
+ "chat_users = ?, " \
+ "date = ?, " \
+ "version = ?, " \
+ "admin_id = ? " \
+ "WHERE chat_id = ?";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 2, chat->id.id);
+ ret = sqlite3_bind_int(stmt, 3, chat->flags);
+ ret = sqlite3_bind_text(stmt, 4, chat->print_title, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 5, chat->structure_version);
+ tmp = tg_common_to_string("%lld", chat->photo.id);
+ ret = sqlite3_bind_text(stmt, 6, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 7, photo, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 8, chat->title, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 9, chat->users_num);
+ ret = sqlite3_bind_int(stmt, 10, chat->user_list_size);
+ ret = sqlite3_bind_int(stmt, 11, chat->user_list_version);
+ ret = sqlite3_bind_int(stmt, 12, chat->user_list[0].inviter_id);
+
+ str_size = 64;
+ str_len = 0;
+ str = malloc(str_size);
+ for (i = 0; i < chat->user_list_size; i++) {
+ str_len += snprintf(str + str_len, str_size - str_len - 1, "%d, ", chat->user_list[i].user_id);
+ if (str_size - str_len < 32) {
+ char *ptr;
+ str_size <<= 1; /* doulbing current size */
+ ptr = realloc(str, str_size);
+ if (!ptr) {
+ break;
+ }
+ str = ptr;
}
+ }
+ /* Cut off the last colon */
+ str[str_len - 2] = '\0';
+ ret = sqlite3_bind_text(stmt, 13, str, str_len - 2, SQLITE_TRANSIENT);
+ free(str);
+ ret = sqlite3_bind_int(stmt, 14, chat->date);
+ ret = sqlite3_bind_int(stmt, 15, chat->version);
+ ret = sqlite3_bind_int(stmt, 16, chat->admin_id);
+ ret = sqlite3_bind_int(stmt, 17, chat->id.id);
+
+ ret = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
+ return 0;
+}
- if(col < col_count - 1){
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, ", ");
- } else {
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, ");");
+int tg_db_insert_chat_info(const char *table_name, struct tgl_chat *chat, char *photo_path)
+{
+ const char *dml;
+ int ret;
+ sqlite3_stmt *stmt;
+ const char *tmp;
+ char *str;
+ int i;
+ int str_len;
+ int str_size;
+
+ dml = "INSERT INTO ? VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 2, chat->id.id);
+ ret = sqlite3_bind_text(stmt, 3, chat->print_title, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 4, chat->structure_version);
+ tmp = tg_common_to_string("%lld", chat->photo.id);
+ ret = sqlite3_bind_text(stmt, 5, tmp, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 6, photo_path, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_text(stmt, 7, chat->title, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 8, chat->users_num);
+ ret = sqlite3_bind_int(stmt, 9, chat->user_list_size);
+ ret = sqlite3_bind_int(stmt, 10, chat->user_list_version);
+ ret = sqlite3_bind_int(stmt, 11, chat->user_list[0].inviter_id);
+
+ str_size = 64;
+ str_len = 0;
+ str = malloc(str_size);
+ for (i = 0; i < chat->user_list_size; i++) {
+ str_len += snprintf(str + str_len, str_size - str_len - 1, "%d, ", chat->user_list[i].user_id);
+ if (str_size - str_len < 32) {
+ char *ptr;
+ str_size <<= 1; /* doulbing current size */
+ ptr = realloc(str, str_size);
+ if (!ptr) {
+ break;
+ }
+ str = ptr;
}
- free(col_value);
}
+ /* Cut off the last colon */
+ str[str_len - 2] = '\0';
+ ret = sqlite3_bind_text(stmt, 12, str, str_len - 2, SQLITE_TRANSIENT);
+ free(str);
+ ret = sqlite3_bind_int(stmt, 13, chat->date);
+ ret = sqlite3_bind_int(stmt, 14, chat->version);
+ ret = sqlite3_bind_int(stmt, 15, chat->admin_id);
+
+ ret = sqlite3_step(stmt);
+
+ sqlite3_finalize(stmt);
+ return 0;
+}
- 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;
+int tg_db_create_table_message(const char *table_name)
+{
+ const char *ddl;
+
+ ddl = "CREATE TABLE ? (" \
+ "msg_id INTEGER," \
+ "flags INTEGER," \
+ "fwd_from_id INTEGER," \
+ "fwd_date INTEGER," \
+ "from_id INTEGER," \
+ "to_id INTEGER," \
+ "out INTEGER," \
+ "unread INTEGER," \
+ "date INTEGER," \
+ "service INTEGER," \
+ "message TEXT," \
+ "message_state INTEGER," \
+ "message_len INTEGER," \
+ "media_type INTEGER," \
+ "media_id TEXT," \
+ "unique_id INTEGER)";
+
+ return create_table_query_to_db(ddl, table_name);
+}
+
+struct tgl_message *tg_db_get_message(const char *table_name, long long id)
+{
+ struct tgl_message *msg;
+ int ret;
+ sqlite3_stmt *stmt;
+ const char *dml;
+ const char *tmp;
+
+ dml = "SELECT * FROM ? WHERE msg_id = ?";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return NULL;
+ }
+
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return NULL;
}
- return EINA_TRUE;
+ ret = sqlite3_bind_int64(stmt, 2, id);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_ROW) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ msg = calloc(1, sizeof(*msg));
+ if (!msg) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ msg->id = id;
+ msg->flags = sqlite3_column_int(stmt, 1);
+ msg->fwd_from_id.id = sqlite3_column_int(stmt, 2);
+ msg->fwd_date = sqlite3_column_int(stmt, 3);
+ msg->from_id.id = sqlite3_column_int(stmt, 4);
+ msg->to_id.id = sqlite3_column_int(stmt, 5);
+ msg->out = sqlite3_column_int(stmt, 6);
+ msg->unread = sqlite3_column_int(stmt, 7);
+ msg->date = sqlite3_column_int(stmt, 8);
+ msg->service = sqlite3_column_int(stmt, 9);
+ tmp = (const char *)sqlite3_column_text(stmt, 10);
+ if (tmp && tmp[0] != '\0') {
+ msg->message = strdup(tmp);
+ if (!msg->message) {
+ /*
+ * @todo
+ */
+ }
+ }
+ msg->msg_state = sqlite3_column_int(stmt, 11);
+ msg->message_len = sqlite3_column_int(stmt, 12);
+ msg->media.type = sqlite3_column_int(stmt, 13);
+ if (msg->media.type == tgl_message_media_photo) {
+ msg->media.photo.id = sqlite3_column_int64(stmt, 14);
+ } else if (msg->media.type == tgl_message_media_document) {
+ msg->media.document.id = sqlite3_column_int64(stmt, 14);
+ } else {
+ // 14
+ }
+ //msg->id = sqlite3_column_int64(stmt, 15);
+ sqlite3_finalize(stmt);
+ return msg;
}
+int tg_db_update_message(const char *table_name, struct tgl_message *M, long long unique_id)
+{
+ int ret;
+ sqlite3_stmt *stmt;
+ const char *dml;
+ dml = "UPDATE ? SET " \
+ "msg_id = ?, " \
+ "flags = ?, " \
+ "fwd_from_id = ?, " \
+ "fwd_date = ?, " \
+ "from_id = ?, " \
+ "to_id = ?, " \
+ "out = ?, " \
+ "unread = ?, " \
+ "date = ?, " \
+ "service = ?, " \
+ "message = ?, " \
+ "message_state = ?, " \
+ "message_len = ?, " \
+ "media_type = ?, " \
+ "media_id = ?, " \
+ "WHERE ? = ?";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int64(stmt, 2, M->id);
+ ret = sqlite3_bind_int(stmt, 3, M->flags);
+ ret = sqlite3_bind_int(stmt, 4, M->fwd_from_id.id);
+ ret = sqlite3_bind_int(stmt, 5, M->fwd_date);
+ ret = sqlite3_bind_int(stmt, 6, M->from_id.id);
+ ret = sqlite3_bind_int(stmt, 7, M->to_id.id);
+ ret = sqlite3_bind_int(stmt, 8, M->out);
+ ret = sqlite3_bind_int(stmt, 9, M->unread);
+ ret = sqlite3_bind_int(stmt, 10, M->date);
+ ret = sqlite3_bind_int(stmt, 11, M->service);
+ ret = sqlite3_bind_text(stmt, 12, M->message, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 13, M->msg_state);
+ ret = sqlite3_bind_int(stmt, 14, M->message_len);
+ ret = sqlite3_bind_int(stmt, 15, M->media.type);
+ if (M->media.type == tgl_message_media_photo) {
+ ret = sqlite3_bind_int64(stmt, 16, M->media.photo.id);
+ } else if (M->media.type == tgl_message_media_document) {
+ ret = sqlite3_bind_int64(stmt, 16, M->media.document.id);
+ } else {
+ ret = sqlite3_bind_int64(stmt, 17, 0);
+ }
+ if (unique_id > 0) {
+ ret = sqlite3_bind_text(stmt, 18, "unique_id", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int64(stmt, 19, unique_id);
+ } else {
+ ret = sqlite3_bind_text(stmt, 18, "msg_id", -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int64(stmt, 19, M->id);
+ }
+ ret = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
+ return 0;
+}
-Eina_Bool update_table(const char* table_name, Eina_List* column_names, Eina_List* column_types, Eina_List* column_values, const char* where_clause)
+int tg_db_insert_message(const char *table_name, struct tgl_message *M, long long unique_id)
{
- if(!s_info.db || !table_name || ! column_names || !column_types || !column_values) {
- return EINA_FALSE;
+ int ret;
+ sqlite3_stmt *stmt;
+ const char *dml;
+
+ dml = "INSERT INTO ? VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 2, M->id);
+ ret = sqlite3_bind_int(stmt, 3, M->flags);
+ ret = sqlite3_bind_int(stmt, 4, M->fwd_from_id.id);
+ ret = sqlite3_bind_int(stmt, 5, M->fwd_date);
+ ret = sqlite3_bind_int(stmt, 6, M->from_id.id);
+ ret = sqlite3_bind_int(stmt, 7, M->to_id.id);
+ ret = sqlite3_bind_int(stmt, 8, M->out);
+ ret = sqlite3_bind_int(stmt, 9, M->unread);
+ ret = sqlite3_bind_int(stmt, 10, M->date);
+ ret = sqlite3_bind_int(stmt, 11, M->service);
+ ret = sqlite3_bind_text(stmt, 12, M->message, -1, SQLITE_TRANSIENT);
+ ret = sqlite3_bind_int(stmt, 13, M->msg_state);
+ ret = sqlite3_bind_int(stmt, 14, M->message_len);
+ ret = sqlite3_bind_int(stmt, 15, M->media.type);
+ if (M->media.type == tgl_message_media_photo) {
+ ret = sqlite3_bind_int64(stmt, 16, M->media.photo.id);
+ } else if (M->media.type == tgl_message_media_document) {
+ ret = sqlite3_bind_int64(stmt, 16, M->media.document.id);
+ } else {
+ ret = sqlite3_bind_int64(stmt, 16, 0);
}
+ ret = sqlite3_bind_int64(stmt, 17, unique_id);
- int ret = 0 ;
- char* err_msg = 0;
- int col_count = eina_list_count(column_names);
+ ret = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
+ return ret == SQLITE_DONE ? 0 : -EIO;
+}
- int str_len = strlen("UPDATE ") + strlen(table_name) + strlen(" SET ") + 1;
- char* var_query = (char*)malloc(str_len);
- strcpy(var_query,"UPDATE ");
- strcat(var_query, table_name);
- strcat(var_query, " SET ");
+int tg_db_create_table_peer_info(const char *table_name)
+{
+ const char *ddl;
+ ddl = "CREATE TABLE ? (" \
+ "user_id INTEGER PRIMARY KEY NOT NULL," \
+ "peer_type INTEGER," \
+ "flags INTEGER," \
+ "message_id TEXT," \
+ "message_date INTEGER," \
+ "print_name TEXT," \
+ "struct_version INTEGER," \
+ "unread_message_count INTEGER," \
+ "last_seen INTEGER," \
+ "photo_path TEXT," \
+ "photo_id INTEGER)";
+ return create_table_query_to_db(ddl, table_name);
+}
+int tg_db_update_peer_info(const char *tablename, tgl_peer_t *UC, int last_msg_id, int unread_count)
+{
+ const char *dml;
+ sqlite3_stmt *stmt;
+ const char *str;
+ int ret;
- int col_val_count = eina_list_count(column_values);
+ dml = "UPDATE ? SET " \
+ "peer_type = ?," \
+ "flags = ?," \
+ "message_id = ?," \
+ "message_data = ?," \
+ "print_name = ?," \
+ "struct_version = ?," \
+ "unread_message_count = ?," \
+ "last_seen = ?," \
+ "photo_path = ?," \
+ "photo_id = ? WHERE user_id = ?";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 1, tablename, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- for(int col = 0; col < col_val_count ; col++) {
- char* col_name = eina_list_nth(column_names, col);
- char* col_type = eina_list_nth(column_types, col);
+ ret = sqlite3_bind_int(stmt, 2, UC->id.type);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- char* col_value = NULL;
- if(!strcmp(col_type, "INTEGER") || !strcmp(col_type, "INTEGER PRIMARY KEY NOT NULL")) {
- int* tmp_value = eina_list_nth(column_values, col);
+ ret = sqlite3_bind_int(stmt, 3, UC->flags);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int act_val = (*tmp_value);
- col_value = (char*)malloc(50);
- sprintf(col_value, "%d", act_val);
+ str = tg_common_to_string("%d", last_msg_id);
+ ret = sqlite3_bind_text(stmt, 4, str, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- var_query = realloc(var_query, strlen(var_query) + strlen(col_name) + strlen(" = ") + strlen(col_value) + 1);
- strcat(var_query, col_name);
- strcat(var_query, " = ");
- strcat(var_query, col_value);
+ ret = sqlite3_bind_int(stmt, 5, UC->last ? UC->last->date : 0);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- } else if(!strcmp(col_type, "TEXT") || !strcmp(col_type, "TEXT PRIMARY KEY NOT NULL")) {
+ ret = sqlite3_bind_text(stmt, 6, UC->print_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- char* tmp_value = eina_list_nth(column_values, col);
- col_value = (char*)malloc(strlen(tmp_value) + 1);
- strcpy(col_value,tmp_value);
+ ret = sqlite3_bind_int(stmt, 7, UC->structure_version);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- var_query = realloc(var_query, strlen(var_query)+ strlen(col_name) + strlen(" = ")+strlen("'") + 1);
- strcat(var_query, col_name);
- strcat(var_query, " = ");
- strcat(var_query, "'");
+ ret = sqlite3_bind_int(stmt, 8, unread_count);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- var_query = realloc(var_query, strlen(var_query)+strlen(col_value) + 1);
- strcat(var_query, col_value);
+ if (UC->id.type == TGL_PEER_USER ) {
+ ret = sqlite3_bind_int(stmt, 9, UC->user.status.when);
+ } else if (UC->id.type == TGL_PEER_CHAT ) {
+ ret = sqlite3_bind_int(stmt, 9, UC->chat.date);
+ } else {
+ ret = sqlite3_bind_int(stmt, 9, 0);
+ }
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- var_query = realloc(var_query, strlen(var_query)+strlen("'") + 1);
- strcat(var_query, "'");
- }
+ ret = sqlite3_bind_text(stmt, 10, "", -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- if(col < col_count - 1){
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, ", ");
- } else {
- var_query = realloc(var_query, strlen(var_query) + 2);
- strcat(var_query, " ");
- }
- free(col_value);
+ ret = sqlite3_bind_int(stmt, 11, UC->photo.id);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
}
- var_query = realloc(var_query, strlen(var_query) + strlen(" WHERE ") + strlen(where_clause) + 2);
- strcat(var_query, " WHERE ");
- strcat(var_query, where_clause);
- strcat(var_query, ";");
+ ret = sqlite3_bind_int(stmt, 12, UC->id.id);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- 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;
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_DONE) {
+ sqlite3_finalize(stmt);
+ return -EIO;
}
- return EINA_TRUE;
+ sqlite3_finalize(stmt);
+ return 0;
}
-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)
+int tg_db_insert_peer_info(const char *tablename, tgl_peer_t *UC, int last_msg_id, int unread_count)
{
- if (!s_info.db || !table_name) {
- return EINA_FALSE;
+ const char *dml;
+ sqlite3_stmt *stmt;
+ const char *str;
+ int ret;
+
+ dml = "INSERT INTO ? ("
+ "user_id,peer_type,flags,message_id,message_date," \
+ "print_name,struct_version,unread_message_count,last_seen," \
+ "photo_path,photo_id) VALUES (?,?,?,?,?,?,?,?,?,?,?)";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return -EFAULT;
}
- /*****No rows identification*****/
+ ret = sqlite3_bind_text(stmt, 1, tablename, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- 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, ";");
+ ret = sqlite3_bind_int(stmt, 2, UC->id.id);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int no_of_rows = 0;
- //ret = sqlite3_exec(s_info.db,var_query, callback,(void*)s_info.db, &err_msg);
+ ret = sqlite3_bind_int(stmt, 3, UC->id.type);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- sqlite3_stmt *stmt;
- 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 {
- no_of_rows = sqlite3_column_int(stmt, 0);
- }
+ ret = sqlite3_bind_int(stmt, 4, UC->flags);
+ if (ret != SQLITE_OK) {
sqlite3_finalize(stmt);
+ return -EFAULT;
}
- free(row_cnt_qry);
- if(no_of_rows <= 0) {
- return EINA_FALSE;
+ str = tg_common_to_string("%d", last_msg_id);
+ ret = sqlite3_bind_text(stmt, 5, str, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
}
- /********************************/
+ ret = sqlite3_bind_int(stmt, 6, UC->last ? UC->last->date : 0);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int ret = 0 ;
- char* err_msg = 0;
- //int col_count = eina_list_count(column_names);
+ ret = sqlite3_bind_text(stmt, 7, UC->print_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_int(stmt, 8, UC->structure_version);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int str_len = strlen("SELECT ") + 1;
- char* var_query = (char*)malloc(str_len);
- strcpy(var_query,"SELECT ");
- if(!column_names) {
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, "* ");
+ ret = sqlite3_bind_int(stmt, 9, unread_count);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ if (UC->id.type == TGL_PEER_USER ) {
+ ret = sqlite3_bind_int(stmt, 10, UC->user.status.when);
+ } else if (UC->id.type == TGL_PEER_CHAT ) {
+ ret = sqlite3_bind_int(stmt, 10, UC->chat.date);
} else {
+ ret = sqlite3_bind_int(stmt, 10, 0);
+ }
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int col_count = eina_list_count(column_names);
- char* col_name = NULL;
- for(int col = 0; col < col_count ; col++) {
- col_name = eina_list_nth(column_names, col);
- var_query = realloc(var_query, strlen(var_query)+strlen(col_name) + 1);
- strcat(var_query, col_name);
- col_name = NULL;
- var_query = realloc(var_query, strlen(var_query)+strlen(" ") + 1);
-
- if(col < col_count - 1){
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, ", ");
- } else {
- var_query = realloc(var_query, strlen(var_query) + 2);
- strcat(var_query, " ");
- }
- }
+ ret = sqlite3_bind_text(stmt, 11, "", -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+ ret = sqlite3_bind_int(stmt, 12, UC->photo.id);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
}
- var_query = realloc(var_query, strlen(var_query) + strlen("FROM ") + 2);
- strcat(var_query, "FROM ");
- var_query = realloc(var_query, strlen(var_query) + strlen(table_name) + 1);
- strcat(var_query, table_name);
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ sqlite3_finalize(stmt);
+ return 0;
+}
- if (where_clause) {
- var_query = realloc(var_query, strlen(var_query)+strlen(" WHERE ") + 1);
- strcat(var_query, " WHERE ");
- var_query = realloc(var_query, strlen(var_query)+strlen(where_clause) + 1);
- strcat(var_query, where_clause);
+int tg_db_update_user_info(const char *tablename, struct tgl_user *U)
+{
+ const char *dml;
+ sqlite3_stmt *stmt;
+ int ret;
+
+ dml = "UPDATE ? SET print_name = ?, structure_version = ?, first_name = ?, last_name = ?, phone = ?, access_hash = ?, real_first_name = ?, real_last_name = ?, username = ?, online = ?, last_seen = ? WHERE user_id = ?";
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return -EFAULT;
}
- var_query = realloc(var_query, strlen(var_query) + 2);
- strcat(var_query, ";");
+ ret = sqlite3_bind_text(stmt, 1, tablename, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+ ret = sqlite3_bind_text(stmt, 2, U->print_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- 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;
+ ret = sqlite3_bind_int(stmt, 3, U->structure_version);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
}
- free(var_query);
- return EINA_TRUE;
+ ret = sqlite3_bind_text(stmt, 4, U->first_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 5, U->last_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 6, U->phone, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_int(stmt, 7, U->access_hash);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 8, U->real_first_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 9, U->real_last_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 10, U->username, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_int(stmt, 11, U->status.online);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_int(stmt, 12, U->last->date);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_int(stmt, 13, U->id.id);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ if (sqlite3_step(stmt) != SQLITE_DONE) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ sqlite3_finalize(stmt);
+ return 0;
}
-Eina_List *get_values_from_table_sync(const char* table_name, Eina_List* column_names, Eina_List* column_types, const char* where_clause)
+int tg_db_update_user_photo(const char *tablename, int uid, const char *photo, int photo_id)
{
- Eina_List* query_vals = NULL;
+ const char *dml;
+ int ret;
+ sqlite3_stmt *stmt;
+ int idx;
- if (!s_info.db || !table_name) {
- return (Eina_List *)NULL;
+ if (photo_id < 0) {
+ dml = "UPDATE ? SET photo = ?, photo_id = ? WHERE user_id = ?";
+ } else {
+ dml = "UPDATE ? SET photo = ? WHERE user_id = ?";
}
- /*****No rows identification*****/
+ idx = 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, ";");
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, idx++, tablename, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int no_of_rows = 0;
- //ret = sqlite3_exec(s_info.db,var_query, callback,(void*)s_info.db, &err_msg);
+ ret = sqlite3_bind_text(stmt, idx++, photo, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+ if (photo_id >= 0) {
+ ret = sqlite3_bind_int(stmt, idx++, photo_id);
+ }
+
+ ret = sqlite3_bind_int(stmt, idx++, uid);
+ ret = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
+ if (ret != SQLITE_DONE) {
+ return -EIO;
+ }
+
+ return 0;
+}
+
+int tg_db_insert_user_info(const char *tablename, struct tgl_user *U)
+{
+ const char *dml;
sqlite3_stmt *stmt;
- 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 {
- no_of_rows = sqlite3_column_int(stmt, 0);
- }
+ int ret;
+
+ dml = "INSERT (user_id, print_name, structure_version, first_name, last_name, phone, access_hash, real_first_name, real_last_name, username, online, last_seen) INTO ? VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_int(stmt, 1, U->id.id);
+ if (ret != SQLITE_OK) {
sqlite3_finalize(stmt);
+ return -EFAULT;
}
- free(row_cnt_qry);
- if(no_of_rows <= 0) {
- return (Eina_List *)NULL;
+ ret = sqlite3_bind_text(stmt, 2, U->print_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
}
- /********************************/
+ ret = sqlite3_bind_int(stmt, 3, U->structure_version);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int ret = 0 ;
- char* err_msg = 0;
- //int col_count = eina_list_count(column_names);
+ ret = sqlite3_bind_text(stmt, 4, U->first_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int str_len = strlen("SELECT ") + 1;
- char* var_query = (char*)malloc(str_len);
- strcpy(var_query,"SELECT ");
- if(!column_names) {
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, "* ");
- } else {
+ ret = sqlite3_bind_text(stmt, 5, U->last_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- int col_count = eina_list_count(column_names);
- char* col_name = NULL;
- for(int col = 0; col < col_count ; col++) {
- col_name = eina_list_nth(column_names, col);
- var_query = realloc(var_query, strlen(var_query)+strlen(col_name) + 1);
- strcat(var_query, col_name);
- col_name = NULL;
- var_query = realloc(var_query, strlen(var_query)+strlen(" ") + 1);
-
- if(col < col_count - 1){
- var_query = realloc(var_query, strlen(var_query) + 3);
- strcat(var_query, ", ");
- } else {
- var_query = realloc(var_query, strlen(var_query) + 2);
- strcat(var_query, " ");
- }
- }
+ ret = sqlite3_bind_text(stmt, 6, U->phone, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_int(stmt, 7, U->access_hash);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 8, U->real_first_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 9, U->real_last_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+
+ ret = sqlite3_bind_text(stmt, 10, U->username, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
+ ret = sqlite3_bind_int(stmt, 11, U->status.online);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
}
- var_query = realloc(var_query, strlen(var_query) + strlen("FROM ") + 2);
- strcat(var_query, "FROM ");
- var_query = realloc(var_query, strlen(var_query) + strlen(table_name) + 1);
- strcat(var_query, table_name);
+ ret = sqlite3_bind_int(stmt, 12, U->last ? U->last->date : 0);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return -EFAULT;
+ }
- if (where_clause) {
- var_query = realloc(var_query, strlen(var_query)+strlen(" WHERE ") + 1);
- strcat(var_query, " WHERE ");
- var_query = realloc(var_query, strlen(var_query)+strlen(where_clause) + 1);
- strcat(var_query, where_clause);
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_DONE) {
+ sqlite3_finalize(stmt);
+ return 0;
}
- var_query = realloc(var_query, strlen(var_query) + 2);
- strcat(var_query, ";");
+ sqlite3_finalize(stmt);
+ return 0;
+}
+struct tgl_user *tg_db_get_user_info(const char *table_name, int uid)
+{
+ const char *dml;
+ sqlite3_stmt *stmt;
+ int ret;
+ struct tgl_user *user_info;
+ const char *tmp;
- ret = sqlite3_prepare_v2(s_info.db, var_query, -1, &stmt, 0);
- if( ret != SQLITE_OK ){
- sqlite3_free(err_msg);
+ dml = "SELECT * FROM ?";
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
return NULL;
}
- while(sqlite3_step(stmt) == SQLITE_ROW) {
- int col_val_count = eina_list_count(column_names);
- Eina_List* row_vals = NULL;
- 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")) {
- 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")) {
- 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);
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ if ((ret = sqlite3_step(stmt)) != SQLITE_ROW) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+ user_info = calloc(1, sizeof(*user_info));
+ if (!user_info) {
+ /**
+ * @note
+ * Unable to get the record of user info
+ */
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ user_info->id.id = sqlite3_column_int(stmt, 0);
+
+ tmp = (const char *)sqlite3_column_text(stmt, 1);
+ if (tmp && tmp[0] != '\0') {
+ user_info->print_name = strdup(tmp);
+ }
+
+ user_info->structure_version = sqlite3_column_int(stmt, 2);
+
+ /**
+ * Getting the photo_path. but how can I store this? to where?
+ */
+ tmp = (const char *)sqlite3_column_text(stmt, 3);
+ if (tmp && tmp[0] != '\0') {
+ /*
+ * Where can I get this photo path?
+ */
+ }
+
+ user_info->photo_id = sqlite3_column_int(stmt, 4);
+ tmp = (const char *)sqlite3_column_text(stmt, 5);
+ if (tmp && tmp[0] != '\0') {
+ user_info->first_name = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 6);
+ if (tmp && tmp[0] != '\0') {
+ user_info->last_name = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 7);
+ if (tmp && tmp[0] != '\0') {
+ user_info->phone = strdup(tmp);
+ }
+
+ user_info->access_hash = sqlite3_column_int(stmt, 8);
+
+ tmp = (const char *)sqlite3_column_text(stmt, 9);
+ if (tmp && tmp[0] != '\0') {
+ user_info->real_first_name = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 10);
+ if (tmp && tmp[0] != '\0') {
+ user_info->real_last_name = strdup(tmp);
}
- free(var_query);
- return query_vals;
+ tmp = (const char *)sqlite3_column_text(stmt, 11);
+ if (tmp && tmp[0] != '\0') {
+ user_info->username = strdup(tmp);
+ }
+
+ sqlite3_finalize(stmt);
+ return user_info;
}
+Eina_List *tg_db_get_user_list(const char *table_name)
+{
+ const char *dml;
+ sqlite3_stmt *stmt;
+ int ret;
+ Eina_List *user_list;
+ struct tgl_user *user_info;
+ const char *tmp;
+
+ dml = "SELECT * FROM ?";
+ ret = sqlite3_prepare_v2(s_info.db, dml, -1, &stmt, NULL);
+ if (ret != SQLITE_OK) {
+ return NULL;
+ }
+
+ ret = sqlite3_bind_text(stmt, 1, table_name, -1, SQLITE_TRANSIENT);
+ if (ret != SQLITE_OK) {
+ sqlite3_finalize(stmt);
+ return NULL;
+ }
+
+ user_list = NULL;
+ while ((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
+ user_info = calloc(1, sizeof(*user_info));
+ if (!user_info) {
+ /**
+ * @note
+ * Unable to get the record of user info
+ */
+ continue;
+ }
+
+ user_info->id.id = sqlite3_column_int(stmt, 0);
+
+ tmp = (const char *)sqlite3_column_text(stmt, 1);
+ if (tmp && tmp[0] != '\0') {
+ user_info->print_name = strdup(tmp);
+ }
+
+ user_info->structure_version = sqlite3_column_int(stmt, 2);
+
+ /**
+ * Getting the photo_path. but how can I store this? to where?
+ */
+ tmp = (const char *)sqlite3_column_text(stmt, 3);
+ if (tmp && tmp[0] != '\0') {
+ /*
+ * Where can I get this photo path?
+ */
+ }
+
+ user_info->photo_id = sqlite3_column_int(stmt, 4);
+ tmp = (const char *)sqlite3_column_text(stmt, 5);
+ if (tmp && tmp[0] != '\0') {
+ user_info->first_name = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 6);
+ if (tmp && tmp[0] != '\0') {
+ user_info->last_name = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 7);
+ if (tmp && tmp[0] != '\0') {
+ user_info->phone = strdup(tmp);
+ }
+
+ user_info->access_hash = sqlite3_column_int(stmt, 8);
+
+ tmp = (const char *)sqlite3_column_text(stmt, 9);
+ if (tmp && tmp[0] != '\0') {
+ user_info->real_first_name = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 10);
+ if (tmp && tmp[0] != '\0') {
+ user_info->real_last_name = strdup(tmp);
+ }
+
+ tmp = (const char *)sqlite3_column_text(stmt, 11);
+ if (tmp && tmp[0] != '\0') {
+ user_info->username = strdup(tmp);
+ }
+
+ user_list = eina_list_append(user_list, user_info);
+ }
+
+ sqlite3_finalize(stmt);
+ return user_list;
+}
#ifndef TG_DB_MANAGER_H_
#define TG_DB_MANAGER_H_
-#include "tg_common.h"
-#include <sqlite3.h>
-
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);
+
+extern int tg_db_create_table_peer_info(const char *table_name);
+extern int tg_db_insert_peer_info(const char *tablename, tgl_peer_t *UC, int last_msg_id, int unread_count);
+extern int tg_db_update_peer_info(const char *tablename, tgl_peer_t *UC, int last_msg_id, int unread_count);
+
+extern int tg_db_create_table_message(const char *table_name);
+extern struct tgl_message *tg_db_get_message(const char *table_name, long long id);
+extern int tg_db_insert_message(const char *table_name, struct tgl_message *M, long long unique_id);
+extern int tg_db_update_message(const char *table_name, struct tgl_message *M, long long unique_id);
+
+extern int tg_db_create_table_buddy_info(const char *table_name);
+
+extern int tg_db_create_table_chat_info(const char *table_name);
+extern int tg_db_insert_chat_info(const char *table_name, struct tgl_chat *chat, char *photo_path);
+extern int tg_db_update_chat_info(const char *table_name, struct tgl_chat *chat, char *photo);
+extern int tg_db_count_chat_info(const char *table_name, struct tgl_chat *chat);
+
+extern int tg_db_create_table_media_info(const char *table_name);
+extern int tg_db_update_media_info_filepath(const char *table_name, long long media_id, const char *filepath);
+extern int tg_db_update_media_info_by_id(const char *table_name, struct tgl_message *msg, long long id);
+extern int tg_db_insert_media_info(const char *table_name, struct tgl_message *msg, const char *filename);
+extern void *tg_db_get_media_info(const char *table_name, long long id, int *media_type);
+
+extern int tg_db_create_table_user_info(const char *table_name);
+extern Eina_List *tg_db_get_user_list(const char *table_name);
+extern struct tgl_user *tg_db_get_user_info(const char *table_name, int uid);
+extern int tg_db_insert_user_info(const char *tablename, struct tgl_user *U);
+extern int tg_db_update_user_info(const char *tablename, struct tgl_user *U);
+extern int tg_db_update_user_photo(const char *tablename, int uid, const char *photo, int photo_id);
#endif /* TG_DB_MANAGER_H_ */
#ifndef SERVER_RESPONSE_H_
#define SERVER_RESPONSE_H_
-
-
extern void process_registration_command(tg_engine_data_s *tg_data, char *phone_no, Eina_Bool trough_sms);
extern void process_validation_command(tg_engine_data_s *tg_data, char *code);
extern void process_send_message_command(int buddy_id, int message_id, int msg_type, char* msg_data, int type_of_chat);
#include "tg_engine.h"
#define USER_INFO_TABLE_NAME "user_info_table"
-
-#define USER_INFO_TABLE_USER_ID "user_id"
-#define USER_INFO_TABLE_PRINT_NAME "print_name"
-#define USER_INFO_TABLE_STRUCTURE_VERSION "structure_version"
-#define USER_INFO_TABLE_PHOTO_PATH "photo_path"
-#define USER_INFO_TABLE_PHOTO_ID "photo_id"
-#define USER_INFO_TABLE_FIRST_NAME "first_name"
-#define USER_INFO_TABLE_LAST_NAME "last_name"
-#define USER_INFO_TABLE_PHONE_NO "phone"
-#define USER_INFO_TABLE_ACCESS_HASH "access_hash"
-#define USER_INFO_TABLE_REAL_FIRST_NAME "real_first_name"
-#define USER_INFO_TABLE_REAL_LAST_NAME "real_last_name"
-#define USER_INFO_TABLE_USER_NAME "username"
-#define USER_INFO_TABLE_ONLINE_STATUS "online"
-#define USER_INFO_TABLE_LAST_SEEN_TIME "last_seen"
-
#define BUDDY_INFO_TABLE_NAME "buddy_info_table"
-
-#define BUDDY_INFO_TABLE_BUDDY_ID "user_id"
-#define BUDDY_INFO_TABLE_PRINT_NAME "print_name"
-#define BUDDY_INFO_TABLE_STRUCTURE_VERSION "structure_version"
-#define BUDDY_INFO_TABLE_PHOTO_PATH "photo_path"
-#define BUDDY_INFO_TABLE_PHOTO_ID "photo_id"
-#define BUDDY_INFO_TABLE_FIRST_NAME "first_name"
-#define BUDDY_INFO_TABLE_LAST_NAME "last_name"
-#define BUDDY_INFO_TABLE_PHONE_NO "phone"
-#define BUDDY_INFO_TABLE_ACCESS_HASH "access_hash"
-#define BUDDY_INFO_TABLE_REAL_FIRST_NAME "real_first_name"
-#define BUDDY_INFO_TABLE_REAL_LAST_NAME "real_last_name"
-#define BUDDY_INFO_TABLE_BUDDY_NAME "username"
-#define BUDDY_INFO_TABLE_ONLINE_STATUS "online"
-#define BUDDY_INFO_TABLE_LAST_SEEN_TIME "last_seen"
-
#define MEDIA_INFO_TABLE_NAME "media_info_table"
-#define MEDIA_INFO_TABLE_MEDIA_ID "media_id"
-#define MEDIA_INFO_TABLE_MEDIA_TYPE "media_type"
-#define MEDIA_INFO_TABLE_ACCESS_HASH "access_hash"
-#define MEDIA_INFO_TABLE_USER_ID "user_id"
-#define MEDIA_INFO_TABLE_DATE "date"
-#define MEDIA_INFO_TABLE_CAPTION "caption"
-#define MEDIA_INFO_TABLE_LONGITUDE "longitude"
-#define MEDIA_INFO_TABLE_LATITUDE "latitude"
-#define MEDIA_INFO_TABLE_SIZES_NUM "sizes_num"
-
-#define MEDIA_INFO_TABLE_PHOTO_TYPE1 "photo_type1" //text
-#define MEDIA_INFO_TABLE_PHOTO_LOC_DC1 "photo_loc_dc1" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_VOL1 "photo_loc_vol1" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_ID1 "photo_loc_id1" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_SECRET1 "photo_loc_secret1" //int
-#define MEDIA_INFO_TABLE_PHOTO_WIDTH1 "photo_width1" //int
-#define MEDIA_INFO_TABLE_PHOTO_HEIGHT1 "photo_height1" //int
-#define MEDIA_INFO_TABLE_PHOTO_SIZE1 "photo_size1" //int
-#define MEDIA_INFO_TABLE_PHOTO_DATA1 "photo_data1" //text
-
-#define MEDIA_INFO_TABLE_PHOTO_TYPE2 "photo_type2" //text
-#define MEDIA_INFO_TABLE_PHOTO_LOC_DC2 "photo_loc_dc2" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_VOL2 "photo_loc_vol2" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_ID2 "photo_loc_id2" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_SECRET2 "photo_loc_secret2" //int
-#define MEDIA_INFO_TABLE_PHOTO_WIDTH2 "photo_width2" //int
-#define MEDIA_INFO_TABLE_PHOTO_HEIGHT2 "photo_height2" //int
-#define MEDIA_INFO_TABLE_PHOTO_SIZE2 "photo_size2" //int
-#define MEDIA_INFO_TABLE_PHOTO_DATA2 "photo_data2" //text
-
-#define MEDIA_INFO_TABLE_PHOTO_TYPE3 "photo_type3" //text
-#define MEDIA_INFO_TABLE_PHOTO_LOC_DC3 "photo_loc_dc3" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_VOL3 "photo_loc_vol3" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_ID3 "photo_loc_id3" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_SECRET3 "photo_loc_secret3" //int
-#define MEDIA_INFO_TABLE_PHOTO_WIDTH3 "photo_width3" //int
-#define MEDIA_INFO_TABLE_PHOTO_HEIGHT3 "photo_height3" //int
-#define MEDIA_INFO_TABLE_PHOTO_SIZE3 "photo_size3" //int
-#define MEDIA_INFO_TABLE_PHOTO_DATA3 "photo_data3" //text
-
-#define MEDIA_INFO_TABLE_PHOTO_TYPE4 "photo_type4" //text
-#define MEDIA_INFO_TABLE_PHOTO_LOC_DC4 "photo_loc_dc4" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_VOL4 "photo_loc_vol4" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_ID4 "photo_loc_id4" //int
-#define MEDIA_INFO_TABLE_PHOTO_LOC_SECRET4 "photo_loc_secret4" //int
-#define MEDIA_INFO_TABLE_PHOTO_WIDTH4 "photo_width4" //int
-#define MEDIA_INFO_TABLE_PHOTO_HEIGHT4 "photo_height4" //int
-#define MEDIA_INFO_TABLE_PHOTO_SIZE4 "photo_size4" //int
-#define MEDIA_INFO_TABLE_PHOTO_DATA4 "photo_data4" //text
-
-#define MEDIA_INFO_TABLE_PHONE_NO "phone"
-#define MEDIA_INFO_TABLE_FIRST_NAME "first_name"
-#define MEDIA_INFO_TABLE_LAST_NAME "last_name"
-#define MEDIA_INFO_TABLE_FILE_PATH "file_path"
-
-
#define MESSAGE_INFO_TABLE_MESSAGE_ID "msg_id"
#define MESSAGE_INFO_TABLE_FLAGS "flags"
#define MESSAGE_INFO_TABLE_FWD_FROM_ID "fwd_from_id"
void update_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path);
-Eina_List* get_buddy_info(int buddy_id);
+extern struct tgl_user* get_buddy_info(int buddy_id);
void insert_media_info_to_db(struct tgl_message *M, char* file_path);
void update_sent_media_info_in_db(struct tgl_message *M, long long unique_val);
void update_receive_media_info_in_db(long long media_id, char* file_path);
-Eina_List* get_image_details_from_db(long long media_id);
-
Eina_Bool is_chat_id_already_exists(struct tgl_chat *C);
#endif /* TG_DB_WRAPPER_H_ */
long long exchange_key_fingerprint;
};
-typedef union tgl_peer {
- struct {
- tgl_peer_id_t id;
- int flags;
- struct tgl_message *last;
- char *print_name;
- int structure_version;
- struct tgl_file_location photo_big;
- struct tgl_file_location photo_small;
- struct tgl_photo photo;
- };
- struct tgl_user user;
- struct tgl_chat chat;
- struct tgl_secret_chat encr_chat;
-} tgl_peer_t;
+
/*
struct tgl_video {
long long id;
};
};
};
+
+typedef union tgl_peer {
+ struct {
+ tgl_peer_id_t id;
+ int flags;
+ struct tgl_message *last;
+ char *print_name;
+ int structure_version;
+ struct tgl_file_location photo_big;
+ struct tgl_file_location photo_small;
+ struct tgl_photo photo;
+ };
+ struct tgl_user user;
+ struct tgl_chat chat;
+ struct tgl_secret_chat encr_chat;
+} tgl_peer_t;
+
#pragma pack(pop)
#endif
#include "logger.h"
#include "tg_engine.h"
#include "server_response.h"
+#include "tg_common.h"
void process_registration_command(tg_engine_data_s *tg_data, char* phone_no, Eina_Bool trough_sms)
return;
}
- result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
+
if(result != SVC_RES_OK) {
// error: cient not ready
}
-
- bundle_free(msg);
}
void send_new_group_added_response(tg_engine_data_s *tg_data, int chat_id)
{
- bundle *msg = bundle_create();
+ int result;
+ bundle *msg;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ ERR("Unable to create the bundle");
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "new_group_added") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char chat_id_str[50];
- sprintf(chat_id_str,"%d",chat_id);
- if (bundle_add_str(msg, "chat_id", chat_id_str) != 0) {
+ str = tg_common_to_string("%d", chat_id);
+ if (bundle_add_str(msg, "chat_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
+
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
-
- bundle_free(msg);
}
void send_chat_profile_pic_updated_response(tg_engine_data_s *tg_data, int chat_id, char* filename)
{
- bundle *msg = bundle_create();
+ int result;
+ bundle *msg;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "new_group_icon_added") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char chat_id_str[50];
- sprintf(chat_id_str,"%d",chat_id);
- if (bundle_add_str(msg, "chat_id", chat_id_str) != 0) {
+ str = tg_common_to_string("%d", chat_id);
+ if (bundle_add_str(msg, "chat_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "chat_icon_path", filename) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
+
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
-
- bundle_free(msg);
}
void send_name_registration_response(tg_engine_data_s *tg_data)
{
- bundle *msg = bundle_create();
+ int result;
+ bundle *msg;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "name_registration_request") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
+
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_add_contacts_request(tg_engine_data_s *tg_data)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ int result;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "add_contacts_request") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
+
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_contacts_and_chats_load_done_response(tg_engine_data_s *tg_data, Eina_Bool is_success)
{
- bundle *msg = bundle_create();
+ int result;
+ bundle *msg;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "contacts_and_chats_load_done") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- if (is_success) {
- if (bundle_add_str(msg, "is_success", "true") != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
- } else {
- if (bundle_add_str(msg, "is_success", "false") != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
+ if (bundle_add_str(msg, "is_success", is_success ? "true" : "false") != BUNDLE_ERROR_NONE) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
+
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_contacts_load_done_response(tg_engine_data_s *tg_data, Eina_Bool is_success)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ int result;
+
+ msg = bundle_create();
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "contacts_load_done") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- if (is_success) {
- if (bundle_add_str(msg, "is_success", "true") != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
- } else {
- if (bundle_add_str(msg, "is_success", "false") != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
+ if (bundle_add_str(msg, "is_success", is_success ? "true" : "false") != BUNDLE_ERROR_NONE) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
- result = tg_server_send_message(tg_data->tg_server, msg);
+ result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_buddy_profile_pic_updated_response(tg_engine_data_s *tg_data, int buddy_id, char* file_path)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ int result;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "buddy_profile_pic_updated") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char usr_id_str[50];
- sprintf(usr_id_str,"%d",buddy_id);
-
- if (bundle_add_str(msg, "user_id", usr_id_str) != 0) {
+ str = tg_common_to_string("%d", buddy_id);
+ if (bundle_add_str(msg, "user_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "file_path", file_path) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_message_received_response(tg_engine_data_s *tg_data, int from_id, int to_id, long long message_id, int type_of_chat)
{
- bundle *msg = bundle_create();
+ int result;
+ bundle *msg;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "message_received") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char from_id_str[50];
- sprintf(from_id_str,"%d",from_id);
-
- if (bundle_add_str(msg, "from_id", from_id_str) != 0) {
+ str = tg_common_to_string("%d", from_id);
+ if (bundle_add_str(msg, "from_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char to_id_str[50];
- sprintf(to_id_str,"%d",to_id);
-
- if (bundle_add_str(msg, "to_id", to_id_str) != 0) {
+ str = tg_common_to_string("%d", to_id);
+ if (bundle_add_str(msg, "to_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char msg_id_str[50];
- sprintf(msg_id_str,"%lld",message_id);
-
- if (bundle_add_str(msg, "message_id", msg_id_str) != 0) {
+ str = tg_common_to_string("%lld", message_id);
+ if (bundle_add_str(msg, "message_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char type_of_chat_str[50];
- sprintf(type_of_chat_str,"%d",type_of_chat);
-
- if (bundle_add_str(msg, "type_of_chat", type_of_chat_str) != 0) {
+ str = tg_common_to_string("%d", type_of_chat);
+ if (bundle_add_str(msg, "type_of_chat", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_message_read_by_buddy_response(tg_engine_data_s *tg_data, int buddy_id, int message_id, char* table_name, char* phone, int type_of_chat)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ int result;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "message_read_by_buddy") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char usr_id_str[50];
- sprintf(usr_id_str,"%d",buddy_id);
-
- if (bundle_add_str(msg, "buddy_id", usr_id_str) != 0) {
+ str = tg_common_to_string("%d", buddy_id);
+ if (bundle_add_str(msg, "buddy_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
}
- char msg_id_str[50];
- sprintf(msg_id_str,"%d", message_id);
-
- if (bundle_add_str(msg, "message_id", msg_id_str) != 0) {
+ str = tg_common_to_string("%d", message_id);
+ if (bundle_add_str(msg, "message_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
}
bundle_free(msg);
}
- char type_of_chat_str[50];
- sprintf(type_of_chat_str,"%d",type_of_chat);
-
- if (bundle_add_str(msg, "type_of_chat", type_of_chat_str) != 0) {
+ str = tg_common_to_string("%d", type_of_chat);
+ if (bundle_add_str(msg, "type_of_chat", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_message_sent_to_buddy_response(tg_engine_data_s *tg_data, int buddy_id, int message_id, char* table_name, Eina_Bool is_success, int type_of_chat)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ const char *str;
+ int result;
+
+ msg = bundle_create();
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "message_sent_to_buddy") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char usr_id_str[50];
- sprintf(usr_id_str,"%d",buddy_id);
-
- if (bundle_add_str(msg, "buddy_id", usr_id_str) != 0) {
+ str = tg_common_to_string("%d", buddy_id);
+ if (bundle_add_str(msg, "buddy_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char msg_id_str[50];
- sprintf(msg_id_str,"%d", message_id);
-
- if (bundle_add_str(msg, "message_id", msg_id_str) != 0) {
+ str = tg_common_to_string("%d", message_id);
+ if (bundle_add_str(msg, "message_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "table_name", table_name) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- if (is_success) {
- if (bundle_add_str(msg, "is_success", "true") != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
- } else {
- if (bundle_add_str(msg, "is_success", "false") != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
+ if (bundle_add_str(msg, "is_success", is_success ? "true" : "false") != BUNDLE_ERROR_NONE) {
+ ERR("Failed to add data by key to bundle");
+ bundle_free(msg);
+ return;
}
- char type_of_chat_str[50];
- sprintf(type_of_chat_str,"%d",type_of_chat);
-
- if (bundle_add_str(msg, "type_of_chat", type_of_chat_str) != 0) {
+ str = tg_common_to_string("%d", type_of_chat);
+ if (bundle_add_str(msg, "type_of_chat", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
-
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_media_download_completed_response(tg_engine_data_s *tg_data, int buddy_id, long long media_id, const char* filename)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ int result;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "media_download_completed") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char usr_id_str[50];
- sprintf(usr_id_str,"%d",buddy_id);
-
- if (bundle_add_str(msg, "buddy_id", usr_id_str) != 0) {
+ str = tg_common_to_string("%d", buddy_id);
+ if (bundle_add_str(msg, "buddy_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char media_id_str[50];
- sprintf(media_id_str,"%lld",media_id);
-
- if (bundle_add_str(msg, "media_id", media_id_str) != 0) {
+ str = tg_common_to_string("%lld", media_id);
+ if (bundle_add_str(msg, "media_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- if (filename) {
- if (bundle_add_str(msg, "file_name", filename) != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
- } else {
- if (bundle_add_str(msg, "file_name", "failed_to_load") != 0) {
- ERR("Failed to add data by key to bundle");
- bundle_free(msg);
- }
+ if (bundle_add_str(msg, "file_name", filename ? filename : "failed_to_load") != BUNDLE_ERROR_NONE) {
+ bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
-
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_contact_updated_response(tg_engine_data_s *tg_data, int buddy_id, char* update_message)
{
+ int result;
+ const char *str;
+ bundle *msg;
+
if (!update_message) {
return;
}
- bundle *msg = bundle_create();
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "contact_updated") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char usr_id_str[50];
- sprintf(usr_id_str,"%d",buddy_id);
-
- if (bundle_add_str(msg, "buddy_id", usr_id_str) != 0) {
+ str = tg_common_to_string("%d", buddy_id);
+ if (bundle_add_str(msg, "buddy_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "update_message", update_message) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
-
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
void send_buddy_status_updated_response(tg_engine_data_s *tg_data, int buddy_id)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ int result;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
bundle_free(msg);
}
- char usr_id_str[50];
- sprintf(usr_id_str,"%d",buddy_id);
-
- if (bundle_add_str(msg, "buddy_id", usr_id_str) != 0) {
+ str = tg_common_to_string("%d", buddy_id);
+ if (bundle_add_str(msg, "buddy_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
-
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
-void send_buddy_type_notification_response(tg_engine_data_s *tg_data, int buddy_id, char* budy_name, int type_status)
+void send_buddy_type_notification_response(tg_engine_data_s *tg_data, int buddy_id, char *buddy_name, int type_status)
{
- bundle *msg = bundle_create();
+ bundle *msg;
+ int result;
+ const char *str;
+
+ msg = bundle_create();
+ if (!msg) {
+ return;
+ }
+
if (bundle_add_str(msg, "app_name", "Tizen Telegram") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
if (bundle_add_str(msg, "command", "type_status_updated") != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char usr_id_str[50];
- sprintf(usr_id_str,"%d",buddy_id);
-
- if (bundle_add_str(msg, "buddy_id", usr_id_str) != 0) {
+ str = tg_common_to_string("%d", buddy_id);
+ if (bundle_add_str(msg, "buddy_id", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- if (bundle_add_str(msg, "buddy_name", budy_name) != 0) {
+ if (bundle_add_str(msg, "buddy_name", buddy_name) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
+ return;
}
- char type_status_str[50];
- sprintf(type_status_str,"%d",type_status);
-
- if (bundle_add_str(msg, "type_status", type_status_str) != 0) {
+ str = tg_common_to_string("%d", type_status);
+ if (bundle_add_str(msg, "type_status", str) != 0) {
ERR("Failed to add data by key to bundle");
bundle_free(msg);
}
- int result = SVC_RES_FAIL;
result = tg_server_send_message(tg_data->tg_server, msg);
-
+ bundle_free(msg);
if(result != SVC_RES_OK) {
// error: cient not ready
}
- bundle_free(msg);
}
* @author sandeep
*/
-#include "tg_db_wrapper.h"
-#include "tg_common.h"
#include "tgl-layout.h"
+#include "tg_common.h"
+#include "tg_db_wrapper.h"
void create_data_base_tables()
{
- 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
- }
-
- 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);
-
- 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
- }
-
- 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);
+ tg_db_create_table_user_info(USER_INFO_TABLE_NAME);
+ tg_db_create_table_user_info(BUDDY_INFO_TABLE_NAME);
+ tg_db_create_table_media_info(MEDIA_INFO_TABLE_NAME);
+ tg_db_create_table_chat_info(CHAT_INFO_TABLE_NAME);
+ tg_db_create_table_peer_info(PEER_INFO_TABLE_NAME);
}
void create_buddy_msg_table(const char* table_name)
{
- 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);
+ tg_db_create_table_message(table_name);
}
void insert_buddy_msg_to_db(struct tgl_message *M)
void insert_peer_into_database(tgl_peer_t* UC, int last_msg_id, int unread_count)
{
+ int ret;
+
if (!UC) {
return;
}
- 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, "");
- }
-
- col_values = eina_list_append(col_values, &(UC->structure_version));
-
- col_values = eina_list_append(col_values, &(unread_count));
-
- 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;
+ ret = tg_db_insert_peer_info(PEER_INFO_TABLE_NAME, UC, last_msg_id, unread_count);
+ if (ret != 0) {
+ ret = tg_db_update_peer_info(PEER_INFO_TABLE_NAME, UC, last_msg_id, unread_count);
}
- 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 {
-
- }
- eina_list_free(col_names);
- eina_list_free(col_types);
- eina_list_free(col_values);
+ return;
}
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;
- 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);
-
- message = (struct tgl_message*)malloc(sizeof(struct tgl_message));
-
-
- int *temp_msg_id = (int*)eina_list_nth(ts_msg, 0);
- if (temp_msg_id) {
- message->id = *temp_msg_id;
- free(temp_msg_id);
- }
-
- int *temp_flags = (int*)eina_list_nth(ts_msg, 1);
- if (temp_flags) {
- message->flags = *temp_flags;
- free(temp_flags);
- }
-
-
- int *temp_fwd_from_id = (int*)eina_list_nth(ts_msg, 2);
- if (temp_fwd_from_id) {
- message->fwd_from_id.id = *temp_fwd_from_id;
- free(temp_fwd_from_id);
- }
-
-
- int *temp_fwd_date = (int*)eina_list_nth(ts_msg, 3);
- if (temp_fwd_date) {
- message->fwd_date = *temp_fwd_date;
- free(temp_fwd_date);
- }
-
-
- int *temp_from_id = (int*)eina_list_nth(ts_msg, 4);
- if (temp_from_id) {
- message->from_id.id = *temp_from_id;
- free(temp_from_id);
- }
-
- int *temp_to_id = (int*)eina_list_nth(ts_msg, 5);
- if (temp_to_id) {
- message->to_id.id = *temp_to_id;
- free(temp_to_id);
- }
-
- int *temp_out = (int*)eina_list_nth(ts_msg, 6);
- if (temp_out) {
- message->out = *temp_out;
- 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);
- }
- }
+ struct tgl_message* message;
+ message = tg_db_get_message(table_name, msg_id);
return message;
}
return;
}
- 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) {
+ tg_db_insert_message(table_name, M, (long long)unique_id);
+}
- char temp_media_id[50];
- sprintf(temp_media_id, "%d", M->media.document.dc_id);
+void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id)
+{
+ if(!M) {
+ return;
+ }
- 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) {
+ tg_db_update_message(table_name, M, unique_id);
+}
- char temp_media_id[50];
- sprintf(temp_media_id, "%d",M->media.user_id);
+Eina_Bool is_chat_id_already_exists(struct tgl_chat *chat_info)
+{
+ // get chat name chat id from chat_info_table
- 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) {
+ int ret;
+ ret = tg_db_count_chat_info(CHAT_INFO_TABLE_NAME, chat_info);
+ return ret > 0 ? EINA_TRUE : EINA_FALSE;
+}
- char temp_media_id[50];
- sprintf(temp_media_id, "%lld",M->media.encr_photo.id);
+void insert_buddy_into_db(char* table_name, struct tgl_user* U)
+{
+ int ret;
- col_values = eina_list_append(col_values, temp_media_id);
- } else if(M->media.type == tgl_message_media_document_encr) {
+ if(!U) {
+ return;
+ }
- char temp_media_id[50];
- sprintf(temp_media_id, "%lld",M->media.document.id);
+ ret = tg_db_insert_user_info(table_name, U);
+ if (ret != 0) {
+ ret = tg_db_update_user_info(table_name, U);
+ if (ret != 0) {
- 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);
+void insert_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
+{
+ if (!chat_info) {
+ return;
+ }
- Eina_Bool ret = insert_table(table_name, col_names, col_types,col_values);
- if(!ret) {
- //("error: database creation failed");
- } else {
+ tg_db_insert_chat_info(CHAT_INFO_TABLE_NAME, chat_info, photo_path);
+}
+void update_chat_info_to_db(struct tgl_chat *chat_info, char *photo_path)
+{
+ if (!chat_info) {
+ return;
}
- eina_list_free(col_names);
- eina_list_free(col_types);
- eina_list_free(col_values);
+ tg_db_update_chat_info(CHAT_INFO_TABLE_NAME, chat_info, photo_path);
}
-void update_msg_into_db(struct tgl_message *M, char* table_name, int unique_id)
+void update_buddy_pic_db(char* file_path, char* table_name, int id)
{
- if(!M) {
+ if (!file_path || !table_name) {
return;
}
- 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);
- }
+ tg_db_update_user_photo(table_name, id, file_path, -1);
+}
- 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));
+/**
+ * @note
+ * This function is not used by tgl-service.
+ * Do we have to keep this from here??
+ */
+struct tgl_user* get_buddy_info(int buddy_id)
+{
+ struct tgl_user *user_info;
- if(M->message)
- col_values = eina_list_append(col_values, M->message);
- else
- col_values = eina_list_append(col_values, " ");
+ user_info = tg_db_get_user_info(BUDDY_INFO_TABLE_NAME, buddy_id);
- 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));
+ return user_info;
+}
- 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(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);
-}
-
-Eina_List* get_registered_user_info()
-{
- Eina_List* user_details = NULL;
-
- 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(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
-
- 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(table_name, col_names, col_types, where_clause);
-
- 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)
+void update_receive_media_info_in_db(long long media_id, char* file_path)
{
- if(!U) {
- return;
- }
-
- 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, "");
-
- 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, "");
-
- if(U->phone)
- col_values = eina_list_append(col_values, U->phone);
- else
- col_values = eina_list_append(col_values, "");
-
- col_values = eina_list_append(col_values, &(U->access_hash));
-
- if(U->real_first_name)
- col_values = eina_list_append(col_values, U->real_first_name);
- else
- col_values = eina_list_append(col_values, "");
-
- if(U->real_last_name)
- col_values = eina_list_append(col_values, U->real_last_name);
- else
- col_values = eina_list_append(col_values, "");
-
- if(U->username)
- col_values = eina_list_append(col_values, U->username);
- else
- col_values = eina_list_append(col_values, "");
-
- 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);
-
+ tg_db_update_media_info_filepath(MEDIA_INFO_TABLE_NAME, media_id, file_path);
}
-void insert_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
+void insert_media_info_to_db(struct tgl_message *M, char* file_path)
{
- if (!chat_info) {
+ if(!M) {
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);
-
- if (photo_path) {
- col_values = eina_list_append(col_values, photo_path);
- } else {
- col_values = eina_list_append(col_values, " ");
- }
-
- 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;
- }
-
- 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, " ");
- }
-
- col_values = eina_list_append(col_values, full_ids);
- /****** add chat users list ********/
-
- 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_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 {
-
- }
- free(full_ids);
- eina_list_free(col_names);
- eina_list_free(col_types);
- eina_list_free(col_values);
+ tg_db_insert_media_info(MEDIA_INFO_TABLE_NAME, M, file_path);
}
-void update_chat_info_to_db(struct tgl_chat *chat_info, char* photo_path)
+void update_sent_media_info_in_db(struct tgl_message *M, long long unique_val)
{
- if (!chat_info) {
+ long long id;
+ if(!M) {
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);
- 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, &(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);
-
- if (photo_path) {
- col_values = eina_list_append(col_values, photo_path);
- }
-
- 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;
- }
-
- 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, ",");
- }
+ if (unique_val == 0) {
+ switch (M->media.type) {
+ case tgl_message_media_photo:
+ id = M->media.photo.id;
+ break;
+ case tgl_message_media_document:
+ id = M->media.document.id;
+ break;
+ default:
+ /**
+ * @note
+ * To be handled.
+ */
+ id = 0;
+ break;
}
} else {
- full_ids = (char*)malloc(2);
- strcpy(full_ids, " ");
- }
-
- col_values = eina_list_append(col_values, full_ids);
- /****** add chat users list ********/
-
- 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 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);
-
- Eina_Bool ret = update_table(table_name, col_names, col_types, col_values, where_clause);
-
- if(!ret) {
- // error handling
- } else {
-
- }
-
- free(full_ids);
- eina_list_free(col_names);
- eina_list_free(col_types);
- eina_list_free(col_values);
-}
-
-void update_buddy_pic_db(char* file_path, char* table_name, int id)
-{
- if (!file_path || !table_name) {
- return;
- }
-
- Eina_List* col_names = NULL;
- col_names = eina_list_append(col_names, USER_INFO_TABLE_PHOTO_PATH);
-
- Eina_List* col_types = NULL;
- col_types = eina_list_append(col_types, TG_DB_COLUMN_TEXT);
-
- Eina_List* col_values = NULL;
- col_values = eina_list_append(col_values, file_path);
-
- char* where_clause = NULL;
-
- 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);
-
- if(!ret) {
- // error handling
- } else {
-
- }
- free(where_clause);
- eina_list_free(col_names);
- eina_list_free(col_types);
- eina_list_free(col_values);
-}
-
-Eina_List* get_buddy_info(int buddy_id)
-{
- Eina_List* user_details = NULL;
-
- 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);
-
- 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);
-
- Eina_List* col_values = NULL;
- col_values = eina_list_append(col_values, file_path);
-
- char media_id_str[50];
- sprintf(media_id_str, "%lld", media_id);
-
- 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 {
-
+ id = unique_val;
}
- free(where_clause);
- eina_list_free(col_names);
- eina_list_free(col_types);
- eina_list_free(col_values);
+ tg_db_update_media_info_by_id(MEDIA_INFO_TABLE_NAME, M, id);
}
-
-void insert_media_info_to_db(struct tgl_message *M, char* file_path)
-{
- 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);
- 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) {
-
- char photo_id_str[50];
- sprintf(photo_id_str, "%lld", M->media.photo.id);
-
- col_values = eina_list_append(col_values, photo_id_str);
- col_values = eina_list_append(col_values, &(media_type));
-
-
- 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, "");
-
- double longitude = M->media.photo.geo.longitude;
- double latitude = M->media.photo.geo.latitude;
-
- 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));
-
-
- 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);
- } 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);
-
-
-
- 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, 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);
-
-
- 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);
-
- 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);
-
- int pic_size = M->media.photo.sizes[i].size;
- col_values = eina_list_append(col_values, &pic_size);
-
- 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, "");
- }
- }
-
- int j = i;
- for (j = i; j < 4; j++) {
-
- char* photo_type = "";
- col_values = eina_list_append(col_values, photo_type);
-
- int photo_loc_dc = -1;
- col_values = eina_list_append(col_values, &photo_loc_dc);
-
- col_values = eina_list_append(col_values, "");
-
- int photo_loc_id = -1;
- col_values = eina_list_append(col_values, &photo_loc_id);
-
-
- col_values = eina_list_append(col_values, "");
-
- int photo_width = -1;
- col_values = eina_list_append(col_values, &photo_width);
-
- int photo_height = -1;
- col_values = eina_list_append(col_values, &photo_height);
-
- 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);
-
- }
-
-
- } 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));
-
- 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;
- 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, "");
-
- 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);
- }
- }
-
- 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, "");
- }
-
- 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 {
-
- }
- eina_list_free(col_names);
- eina_list_free(col_types);
- eina_list_free(col_values);
-
-}
-
-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_id_str[50];
- sprintf(photo_id_str, "%lld", M->media.photo.id);
-
- col_values = eina_list_append(col_values, photo_id_str);
- col_values = eina_list_append(col_values, &(media_type));
-
-
- 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, "");
-
- double longitude = M->media.photo.geo.longitude;
- double latitude = M->media.photo.geo.latitude;
-
- 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));
-
-
- 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);
- } 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);
-
-
-
- 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, 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);
-
-
- 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);
-
- 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);
-
- int pic_size = M->media.photo.sizes[i].size;
- col_values = eina_list_append(col_values, &pic_size);
-
- 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, "");
- }
- }
-
- 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;
-
- 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 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));
-
- 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));
-
- 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);
- }
- }
-
- 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, "");
- }
-
- 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, "");
- }
-
-
- 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, "'");
- }
-
- Eina_Bool ret = update_table(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);
-
-}
-
-Eina_List* get_image_details_from_db(long long media_id)
-{
- Eina_List* vals = NULL;
-
- char* table_name = MEDIA_INFO_TABLE_NAME;
-
- 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);
-
- return vals;
-}
-
-
void tg_server_destroy(tg_server *proxy_cl)
{
- if (proxy_cl)
- {
+ if (proxy_cl) {
message_port_unregister_local_port(proxy_cl->local_port_id);
free(proxy_cl->remote_port_name);
free(proxy_cl->remote_app_name);
RETVM_IF(!port_name, result, "Message port name is NULL");
int temp_id = message_port_register_local_port(port_name, _on_message_received_cb, proxy_cl);
- if (temp_id < 0)
- {
+ if (temp_id < 0) {
_tg_server_convert_msg_port_result(temp_id);
ERR("Failed to register local message port");
proxy_cl->local_port_id = 0;
char *temp_rem_app_name = NULL;
char *temp_rem_port_name = NULL;
- if (!proxy_cl->remote_app_name && rem_app_name)
- {
+ if (!proxy_cl->remote_app_name && rem_app_name) {
temp_rem_app_name = strdup(rem_app_name);
RETVM_IF(!temp_rem_app_name, SVC_RES_FAIL,
"Failed to set remote application name. Strdup failed");
}
- if (!proxy_cl->remote_port_name && rem_port_name)
- {
+ if (!proxy_cl->remote_port_name && rem_port_name) {
temp_rem_port_name = strdup(rem_port_name);
- if (!temp_rem_port_name)
- {
+ if (!temp_rem_port_name) {
ERR("Failed to set remote port name. Strdup failed");
free(temp_rem_app_name);
return SVC_RES_FAIL;
}
}
- if (temp_rem_app_name)
- {
+ if (temp_rem_app_name) {
proxy_cl->remote_app_name = temp_rem_app_name;
}
- if (temp_rem_port_name)
- {
+ if (temp_rem_port_name) {
proxy_cl->remote_port_name = temp_rem_port_name;
}
int res = _tg_server_set_remote_data(proxy_cl, rem_app_name, rem_port_name);
RETM_IF(res != SVC_RES_OK ,"Failed to set remote data to message port");
- if (proxy_cl->cb_func)
- {
+ if (proxy_cl->cb_func) {
res = proxy_cl->cb_func(proxy_cl->cb_data, rec_msg);
RETM_IF(res != SVC_RES_OK ,"Message port callback function failed");
- }
- else
- {
+ } else {
DBG("Message port callback function not set");
}
}
#include <Ecore.h>
#include "tg_db_wrapper.h"
#include "tgl-fetch.h"
+#include "tg_common.h"
#define DC_SERIALIZED_MAGIC 0x868aa81d
#define STATE_FILE_MAGIC 0x28949a93
void tg_user_status_update(struct tgl_state *TLS, struct tgl_user *U)
{
-
if (tgl_get_peer_type (U->id) != TGL_PEER_USER) {
return;
}
// newly created user
} else {
// existing user
-
}
if (U->flags & FLAG_USER_SELF) {
{
#if 1
// get media details by mediaid
- Eina_List* img_details = get_image_details_from_db(media_id);
+ int media_type;
+ void *media;
- if(!img_details) {
+ media = tg_db_get_media_info(MEDIA_INFO_TABLE_NAME, media_id, &media_type);
+ if (!media) {
send_media_download_completed_response(tg_data, buddy_id, media_id, NULL);
return;
- } else {
-
- char *media_id_str = 0;
- int media_type = 0;
- char *access_hash_str = 0;
- int user_id = 0;
- int date = 0;
- char *caption = 0;
- char *longitude = 0;
- char *latitude = 0;
- int sizes = 0;
- char *phone_no = 0;
- char *first_name = 0;
- char *last_name = 0;
- char *file_path = 0;
-
- char *photo_type1 = 0;
- int photo_loc_dc1 = 0;
- char *photo_loc_vol_str1 = 0;
- int photo_loc_id1 = 0;
- char *photo_loc_sec_str1 = 0;
- int photo_width1 = 0;
- int photo_height1 = 0;
- int photo_size1 = 0;
- char *photo_data1 = 0;
-
- char *photo_type2 = 0;
- int photo_loc_dc2 = 0;
- char *photo_loc_vol_str2 = 0;
- int photo_loc_id2 = 0;
- char *photo_loc_sec_str2 = 0;
- int photo_width2 = 0;
- int photo_height2 = 0;
- int photo_size2 = 0;
- char *photo_data2 = 0;
-
- char *photo_type3 = 0;
- int photo_loc_dc3 = 0;
- char *photo_loc_vol_str3 = 0;
- int photo_loc_id3 = 0;
- char *photo_loc_sec_str3 = 0;
- int photo_width3 = 0;
- int photo_height3 = 0;
- int photo_size3 = 0;
- char *photo_data3 = 0;
-
- char *photo_type4 = 0;
- int photo_loc_dc4 = 0;
- char *photo_loc_vol_str4 = 0;
- int photo_loc_id4 = 0;
- char *photo_loc_sec_str4 = 0;
- int photo_width4 = 0;
- int photo_height4 = 0;
- int photo_size4 = 0;
- char *photo_data4 = 0;
-
-
- int row_count = eina_list_count(img_details);
-
- for (int i = 0 ; i < row_count ; i++) {
- Eina_List* row_vals = eina_list_nth(img_details, i);
-
- char *temp_media_id = (char *)eina_list_nth(row_vals, 0);
-
- if(temp_media_id) {
- media_id_str = strdup(temp_media_id);
- free(temp_media_id);
- }
-
- int* temp_media_type = (int*)eina_list_nth(row_vals, 1);
-
- if(temp_media_type) {
- media_type = *temp_media_type;
- free(temp_media_type);
- }
-
- char *temp_access_hash = (char *)eina_list_nth(row_vals, 2);
-
- if(temp_access_hash) {
- access_hash_str = strdup(temp_access_hash);
- free(temp_access_hash);
- }
-
- int* temp_user_id = (int*)eina_list_nth(row_vals, 3);
-
- if(temp_user_id) {
- user_id = *temp_user_id;
- free(temp_user_id);
- }
-
- int* temp_date = (int*)eina_list_nth(row_vals, 4);
-
- if(temp_date) {
- date = *temp_date;
- free(temp_date);
- }
-
- char *temp_caption = (char *)eina_list_nth(row_vals, 5);
-
- if(temp_caption) {
- caption = strdup(temp_caption);
- free(temp_caption);
- }
-
- char *temp_longitude = (char *)eina_list_nth(row_vals, 6);
-
- if(temp_longitude) {
- longitude = strdup(temp_longitude);
- free(temp_longitude);
- }
-
- char *temp_latitude = (char *)eina_list_nth(row_vals, 7);
-
- if(temp_latitude) {
- latitude = strdup(temp_latitude);
- free(temp_latitude);
- }
-
- int* temp_sizes = (int*)eina_list_nth(row_vals, 8);
-
- if(temp_sizes) {
- sizes = *temp_sizes;
- free(temp_sizes);
- }
-
- /***************************************************************/
-
- char *temp_photo_type1 = (char *)eina_list_nth(row_vals, 9);
- if (temp_photo_type1 && strlen(temp_photo_type1) > 0) {
- photo_type1 =strdup(temp_photo_type1);
- free(temp_photo_type1);
- }
-
-
- int* temp_photo_loc_dc1 = (int*)eina_list_nth(row_vals, 10);
- if (temp_photo_loc_dc1) {
- photo_loc_dc1 = *temp_photo_loc_dc1;
- free(temp_photo_loc_dc1);
- }
-
-
- char *temp_photo_loc_vol1 = (char *)eina_list_nth(row_vals, 11);
- if(temp_photo_loc_vol1 && strlen(temp_photo_loc_vol1) > 0) {
- photo_loc_vol_str1 = strdup(temp_photo_loc_vol1);
- free(temp_photo_loc_vol1);
- }
-
-
- int* temp_photo_loc_id1 = (int*)eina_list_nth(row_vals, 12);
- if (temp_photo_loc_id1) {
- photo_loc_id1 = *temp_photo_loc_id1;
- free(temp_photo_loc_id1);
- }
-
- char *temp_photo_loc_sec1 = (char *)eina_list_nth(row_vals, 13);
- if(temp_photo_loc_sec1 && strlen(temp_photo_loc_sec1) > 0) {
- photo_loc_sec_str1 = strdup(temp_photo_loc_sec1);
- free(temp_photo_loc_sec1);
- }
-
-
- int* temp_photo_width1 = (int*)eina_list_nth(row_vals, 14);
- if(temp_photo_width1) {
- photo_width1 = *temp_photo_width1;
- free(temp_photo_width1);
- }
-
-
- int* temp_photo_height1 = (int*)eina_list_nth(row_vals, 15);
- if(temp_photo_height1) {
- photo_height1 = *temp_photo_height1;
- free(temp_photo_height1);
- }
-
- int* temp_photo_size1 = (int*)eina_list_nth(row_vals, 16);
- if(temp_photo_size1) {
- photo_size1 = *temp_photo_size1;
- free(temp_photo_size1);
- }
-
-
- char *temp_photo_data1 = (char *)eina_list_nth(row_vals, 17);
- if(temp_photo_data1 && strlen(temp_photo_data1) > 0) {
- photo_data1 = strdup(temp_photo_data1);
- free(temp_photo_data1);
- }
-
-
- char *temp_photo_type2 = (char *)eina_list_nth(row_vals, 18);
- if (temp_photo_type2 && strlen(temp_photo_type2) > 0) {
- photo_type2 =strdup(temp_photo_type2);
- free(temp_photo_type2);
- }
-
-
- int* temp_photo_loc_dc2 = (int*)eina_list_nth(row_vals, 19);
- if (temp_photo_loc_dc2) {
- photo_loc_dc2 = *temp_photo_loc_dc2;
- free(temp_photo_loc_dc2);
- }
-
-
- char *temp_photo_loc_vol2 = (char *)eina_list_nth(row_vals, 20);
- if(temp_photo_loc_vol2 && strlen(temp_photo_loc_vol2) > 0) {
- photo_loc_vol_str2 = strdup(temp_photo_loc_vol2);
- free(temp_photo_loc_vol2);
- }
-
-
- int* temp_photo_loc_id2 = (int*)eina_list_nth(row_vals, 21);
- if (temp_photo_loc_id2) {
- photo_loc_id2 = *temp_photo_loc_id2;
- free(temp_photo_loc_id2);
- }
-
- char *temp_photo_loc_sec2 = (char *)eina_list_nth(row_vals, 22);
- if(temp_photo_loc_sec2 && strlen(temp_photo_loc_sec2) > 0) {
- photo_loc_sec_str2 = strdup(temp_photo_loc_sec2);
- free(temp_photo_loc_sec2);
- }
-
-
- int* temp_photo_width2 = (int*)eina_list_nth(row_vals, 23);
- if(temp_photo_width2) {
- photo_width2 = *temp_photo_width2;
- free(temp_photo_width2);
- }
-
-
- int* temp_photo_height2 = (int*)eina_list_nth(row_vals, 24);
- if(temp_photo_height2) {
- photo_height2 = *temp_photo_height2;
- free(temp_photo_height2);
- }
-
- int* temp_photo_size2 = (int*)eina_list_nth(row_vals, 25);
- if(temp_photo_size2) {
- photo_size2 = *temp_photo_size2;
- free(temp_photo_size2);
- }
-
-
- char *temp_photo_data2 = (char *)eina_list_nth(row_vals, 26);
- if(temp_photo_data2 && strlen(temp_photo_data2) > 0) {
- photo_data2 = strdup(temp_photo_data2);
- free(temp_photo_data2);
- }
-
- char *temp_photo_type3 = (char *)eina_list_nth(row_vals, 27);
- if (temp_photo_type3 && strlen(temp_photo_type3) > 0) {
- photo_type3 =strdup(temp_photo_type3);
- free(temp_photo_type3);
- }
-
-
- int* temp_photo_loc_dc3 = (int*)eina_list_nth(row_vals, 28);
- if (temp_photo_loc_dc3) {
- photo_loc_dc3 = *temp_photo_loc_dc3;
- free(temp_photo_loc_dc3);
- }
-
-
- char *temp_photo_loc_vol3 = (char *)eina_list_nth(row_vals, 29);
- if(temp_photo_loc_vol3 && strlen(temp_photo_loc_vol3) > 0) {
- photo_loc_vol_str3 = strdup(temp_photo_loc_vol3);
- free(temp_photo_loc_vol3);
- }
-
-
- int* temp_photo_loc_id3 = (int*)eina_list_nth(row_vals, 30);
- if (temp_photo_loc_id3) {
- photo_loc_id3 = *temp_photo_loc_id3;
- free(temp_photo_loc_id3);
- }
-
- char *temp_photo_loc_sec3 = (char *)eina_list_nth(row_vals, 31);
- if(temp_photo_loc_sec3 && strlen(temp_photo_loc_sec3) > 0) {
- photo_loc_sec_str3 = strdup(temp_photo_loc_sec3);
- free(temp_photo_loc_sec3);
- }
-
-
- int* temp_photo_width3 = (int*)eina_list_nth(row_vals, 32);
- if(temp_photo_width3) {
- photo_width3 = *temp_photo_width3;
- free(temp_photo_width3);
- }
-
-
- int* temp_photo_height3 = (int*)eina_list_nth(row_vals, 33);
- if(temp_photo_height3) {
- photo_height3 = *temp_photo_height3;
- free(temp_photo_height3);
- }
-
- int* temp_photo_size3 = (int*)eina_list_nth(row_vals, 34);
- if(temp_photo_size3) {
- photo_size3 = *temp_photo_size3;
- free(temp_photo_size3);
- }
-
-
- char *temp_photo_data3 = (char *)eina_list_nth(row_vals, 35);
- if(temp_photo_data3 && strlen(temp_photo_data3) > 0) {
- photo_data3 = strdup(temp_photo_data3);
- free(temp_photo_data3);
- }
-
- char *temp_photo_type4 = (char *)eina_list_nth(row_vals, 36);
- if (temp_photo_type4 && strlen(temp_photo_type4) > 0) {
- photo_type4 =strdup(temp_photo_type4);
- free(temp_photo_type4);
- }
-
-
- int* temp_photo_loc_dc4 = (int*)eina_list_nth(row_vals, 37);
- if (temp_photo_loc_dc4) {
- photo_loc_dc4 = *temp_photo_loc_dc4;
- free(temp_photo_loc_dc4);
- }
-
-
- char *temp_photo_loc_vol4 = (char *)eina_list_nth(row_vals, 38);
- if(temp_photo_loc_vol4 && strlen(temp_photo_loc_vol4) > 0) {
- photo_loc_vol_str4 = strdup(temp_photo_loc_vol4);
- free(temp_photo_loc_vol4);
- }
-
-
- int* temp_photo_loc_id4 = (int*)eina_list_nth(row_vals, 39);
- if (temp_photo_loc_id4) {
- photo_loc_id4 = *temp_photo_loc_id4;
- free(temp_photo_loc_id4);
- }
-
- char *temp_photo_loc_sec4 = (char *)eina_list_nth(row_vals, 40);
- if(temp_photo_loc_sec4 && strlen(temp_photo_loc_sec4) > 0) {
- photo_loc_sec_str4 = strdup(temp_photo_loc_sec4);
- free(temp_photo_loc_sec4);
- }
-
-
- int* temp_photo_width4 = (int*)eina_list_nth(row_vals, 41);
- if(temp_photo_width4) {
- photo_width4 = *temp_photo_width4;
- free(temp_photo_width4);
- }
-
-
- int* temp_photo_height4 = (int*)eina_list_nth(row_vals, 42);
- if(temp_photo_height4) {
- photo_height4 = *temp_photo_height4;
- free(temp_photo_height4);
- }
-
- int* temp_photo_size4 = (int*)eina_list_nth(row_vals, 43);
- if(temp_photo_size4) {
- photo_size4 = *temp_photo_size4;
- free(temp_photo_size4);
- }
-
-
- char *temp_photo_data4 = (char *)eina_list_nth(row_vals, 44);
- if(temp_photo_data4 && strlen(temp_photo_data4) > 0) {
- photo_data4 = strdup(temp_photo_data4);
- free(temp_photo_data4);
- }
-
-
- /**************************************************************/
-
- char *temp_phone_no = (char *)eina_list_nth(row_vals, 45);
-
- if(temp_phone_no && strlen(temp_phone_no) > 0) {
- phone_no = strdup(temp_phone_no);
- free(temp_phone_no);
- }
-
- char *temp_first_name = (char *)eina_list_nth(row_vals, 46);
-
- if(temp_first_name && strlen(temp_first_name) > 0) {
- first_name = strdup(temp_first_name);
- free(temp_first_name);
- }
-
- char *temp_last_name = (char *)eina_list_nth(row_vals, 47);
-
- if(temp_last_name && strlen(temp_last_name) > 0) {
- last_name = strdup(temp_last_name);
- free(temp_last_name);
- }
-
- char *temp_file_path = (char *)eina_list_nth(row_vals, 48);
-
- if(temp_file_path && strlen(temp_file_path) > 0) {
- file_path = strdup(temp_file_path);
- free(temp_file_path);
- }
- break;
- eina_list_free(row_vals);
- }
-
- if (media_type == tgl_message_media_none) {
-
- } else if (media_type == tgl_message_media_photo) {
-
- long long media_id = atoll(media_id_str);
- long long access_hash = atoll(access_hash_str);
-
- struct tgl_photo* photo_prop = (struct tgl_photo*)malloc(sizeof(struct tgl_photo));
- photo_prop->id = media_id;
- photo_prop->access_hash = access_hash;
- photo_prop->user_id = user_id;
- photo_prop->date = date;
- photo_prop->caption = caption;
- photo_prop->geo.latitude = atof(latitude);
- photo_prop->geo.longitude = atof(longitude);
- photo_prop->sizes_num = sizes;
-
- photo_prop->sizes = talloc(sizeof(struct tgl_photo_size) * photo_prop->sizes_num);
- int i;
- for (i = 0; i < photo_prop->sizes_num; i++) {
-
- if (i == 0) {
- photo_prop->sizes[i].w = photo_width1;
- photo_prop->sizes[i].h = photo_height1;
- photo_prop->sizes[i].size = photo_size1;
- if(photo_data1) {
- photo_prop->sizes[i].data = strdup(photo_data1);
- }
- if(photo_type1) {
- photo_prop->sizes[i].type = strdup(photo_type1);
- }
- photo_prop->sizes[i].loc.dc = photo_loc_dc1;
- photo_prop->sizes[i].loc.local_id = photo_loc_id1;
- photo_prop->sizes[i].loc.secret = atoll(photo_loc_sec_str1);
- photo_prop->sizes[i].loc.volume = atoll(photo_loc_vol_str1);
- } else if (i == 1) {
-
- photo_prop->sizes[i].w = photo_width2;
- photo_prop->sizes[i].h = photo_height2;
- photo_prop->sizes[i].size = photo_size2;
- if(photo_data2) {
- photo_prop->sizes[i].data = strdup(photo_data2);
- }
- if(photo_type2) {
- photo_prop->sizes[i].type = strdup(photo_type2);
- }
- photo_prop->sizes[i].loc.dc = photo_loc_dc2;
- photo_prop->sizes[i].loc.local_id = photo_loc_id2;
- photo_prop->sizes[i].loc.secret = atoll(photo_loc_sec_str2);
- photo_prop->sizes[i].loc.volume = atoll(photo_loc_vol_str2);
-
- } else if (i == 2) {
-
- photo_prop->sizes[i].w = photo_width3;
- photo_prop->sizes[i].h = photo_height3;
- photo_prop->sizes[i].size = photo_size3;
- if(photo_data3) {
- photo_prop->sizes[i].data = strdup(photo_data3);
- }
- if(photo_type3) {
- photo_prop->sizes[i].type = strdup(photo_type3);
- }
- photo_prop->sizes[i].loc.dc = photo_loc_dc3;
- photo_prop->sizes[i].loc.local_id = photo_loc_id3;
- photo_prop->sizes[i].loc.secret = atoll(photo_loc_sec_str3);
- photo_prop->sizes[i].loc.volume = atoll(photo_loc_vol_str3);
-
- } else if (i == 3) {
-
- photo_prop->sizes[i].w = photo_width4;
- photo_prop->sizes[i].h = photo_height4;
- photo_prop->sizes[i].size = photo_size4;
- if(photo_data4) {
- photo_prop->sizes[i].data = strdup(photo_data4);
- }
- if(photo_type4) {
- photo_prop->sizes[i].type = strdup(photo_type4);
- }
- photo_prop->sizes[i].loc.dc = photo_loc_dc4;
- photo_prop->sizes[i].loc.local_id = photo_loc_id4;
- photo_prop->sizes[i].loc.secret = atoll(photo_loc_sec_str4);
- photo_prop->sizes[i].loc.volume = atoll(photo_loc_vol_str4);
-
-
- } else {
-
- }
-
- }
-
- tgl_do_load_photo(s_info.TLS, photo_prop ,&on_image_download_completed, photo_prop);
+ }
- } else {
+ if (media_type == tgl_message_media_photo) {
+ struct tgl_photo *photo = media;
+ tgl_do_load_photo(s_info.TLS, photo, &on_image_download_completed, photo);
+ /**
+ * @note
+ * After this, what happens to "photo"?
+ * Is it released automatically?
+ */
+ } else if (media_type == tgl_message_media_document) {
+ /**
+ * @todo
+ * implements me
+ */
+ } else {
- }
}
#endif
}
--- /dev/null
+#include <stdio.h>
+#include <stdarg.h>
+#include "tg_common.h"
+
+const char *tg_common_to_string(const char *fmt, ...)
+{
+ va_list vp;
+ static char string_buffer[256];
+ int ret;
+
+ va_start(vp, fmt);
+ ret = vsnprintf(string_buffer, sizeof(string_buffer) - 1, fmt, vp);
+ va_end(vp);
+
+ return ret <= 0 ? NULL : string_buffer;
+}
+
+/* End of a file */
TG_MESSAGE_STATE_UNKNOWN
} TG_MESSAGE_STATE;
+extern const char *tg_common_to_string(const char *fmt, ...);
+
//static char* get_table_name_from_number(const char* phone_no)
static inline char *get_table_name_from_number(const int id)
{
<privilege>http://tizen.org/privilege/appmanager.launch</privilege>
<privilege>http://tizen.org/privilege/content.write</privilege>
<privilege>http://tizen.org/privilege/push</privilege>
+ <privilege>http://tizen.org/privilege/alarm.get</privilege>
<privilege>http://tizen.org/privilege/network.profile</privilege>
<privilege>http://tizen.org/privilege/display</privilege>
<privilege>http://tizen.org/privilege/account.read</privilege>
<privilege>http://tizen.org/privilege/bluetooth</privilege>
<privilege>http://tizen.org/privilege/mediastorage</privilege>
<privilege>http://tizen.org/privilege/internet</privilege>
- <privilege>http://tizen.org/privilege/network.set</privilege>
<privilege>http://tizen.org/privilege/notification</privilege>
+ <privilege>http://tizen.org/privilege/network.set</privilege>
<privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
<privilege>http://tizen.org/privilege/contact.read</privilege>
</privileges>
+ <feature name="http://tizen.org/feature/camera.front.flash">true</feature>
+ <feature name="http://tizen.org/feature/camera.back.flash">true</feature>
+ <feature name="http://tizen.org/feature/network.push">true</feature>
+ <feature name="http://tizen.org/feature/camera">true</feature>
+ <feature name="http://tizen.org/feature/network.wifi">true</feature>
+ <feature name="http://tizen.org/feature/camera.front">true</feature>
+ <feature name="http://tizen.org/feature/screen.size.all">true</feature>
+ <feature name="http://tizen.org/feature/network.telephony">true</feature>
+ <feature name="http://tizen.org/feature/camera.back">true</feature>
</manifest>