3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 #include <glib/gprintf.h>
22 #include "utility/sync_util.h"
23 #include "data-adapter/common_internal.h"
24 #include "data-adapter/agent_handler_manager.h"
25 #include "data-adapter/agent_handler_manager_internal.h"
26 #include "data-adapter/agent.h"
27 #include "data-adapter/luid.h"
29 #include "data-adapter/interface_item.h"
30 #include "data-adapter/interface_last_anchor.h"
31 #include "data-adapter/interface_mapping.h"
33 #ifndef SYNC_AGENT_LOG
35 #define LOG_TAG "AF_DACI"
38 /* static function define */
39 static int _busy_handler(void *pData, int count);
40 static sync_agent_da_return_e __query_exec(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char *err_msg);
41 static daci_stmt __query_prepare(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size);
42 static sync_agent_da_return_e __stmt_bind_text(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const char *value);
43 static sync_agent_da_return_e _stmt_bind_int(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const int value);
44 static sync_agent_da_return_e _stmt_bind_blob(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const void *value, int nbyte);
45 static sync_agent_da_return_e __stmt_bind_null(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index);
46 static sync_agent_da_return_e _stmt_read_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
47 static sync_agent_da_return_e __stmt_write_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
48 static sync_agent_da_return_e _stmt_reset(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
49 static sync_agent_da_return_e __stmt_finalize(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt);
50 static char *_stmt_column_text(daci_stmt stmt, int index);
51 static int __stmt_column_int(daci_stmt stmt, int index);
52 static sync_agent_da_return_e _get_table(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char ***result, int *row_count, int *col_count);
53 static void __free_table(char **result);
55 static sync_agent_da_return_e _create_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id);
56 static sync_agent_da_return_e _drop_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id);
57 static sync_agent_da_return_e _delete_changlog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id);
59 static int __exist_table(SYNC_AGENT_DA_HANDLER * daci_handler, const char *table_name);
60 static int _get_data_count(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size);
61 static char *__replace_table_name(char *old, int account_id, int count);
62 static char *__get_table_name(sync_agent_da_table_name_e table_name);
63 static char *_get_column_name(sync_agent_da_column_name_e column_name);
64 static int _get_next_account_id(void);
65 static sync_agent_da_return_e _delete_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_table_name_e table_name, int account_id);
67 static char *daci_file_path = 0;
68 static pthread_t use_transaction_thread_id = 0;
69 static pthread_mutex_t transaction_lock = PTHREAD_MUTEX_INITIALIZER;
70 static pthread_mutex_t exec_lock = PTHREAD_MUTEX_INITIALIZER;
72 static char *g_daci_create_table[] = {
73 /* 1. create account_tbl */
74 "create table account_tbl" "(" "account_id integer not null," "email_address varchar(51) not null," "password varchar(51) not null," "enable boolean not null default 1," "last_update date not null default current_timestamp,"
75 "access_name varchar(64) not null," "constraint account_tbl_pk primary key(account_id)" ");",
77 /* 2. create folder_tbl */
78 "create table folder_tbl" "(" "folder_id varchar(64) not null," "data_store_id integer not null," "account_id integer not null," "folder_type_id integer not null," "service_id varchar(20) default null," "parent_folder_id varchar(64) default null,"
79 "last_update date not null default current_timestamp," "access_name varchar(64) not null," "constraint folder_tbl_pk primary key(folder_id)," "constraint folder_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)" ");",
81 /* 3. create item_tbl */
82 "create table item_tbl"
84 "item_id varchar(64) not null,"
85 "data_store_id integer not null," "account_id integer not null," "folder_id varchar(64) not null," "service_id varchar(20) not null," "last_update date not null default current_timestamp," "access_name varchar(64) not null,"
86 "constraint item_tbl_pk primary key(item_id)," "constraint item_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)," "constraint itme_tbl_folder_id_fk foreign key(folder_id) references folder_tbl(folder_id),"
87 "constraint item_tbl_uk unique(data_store_id, account_id, service_id)" ");",
89 /* 4. create config_tbl */
90 "create table config_tbl" "(" "config_id integer not null," "key varchar(50) not null," "value varchar(30) default null," "type varchar(10) default null," "last_update date not null default current_timestamp," "access_name varchar(64) not null,"
91 "constraint config_tbl_pk primary key(config_id, Key)" ");",
93 /* 5. create account_item_changelog_tbl */
94 "create table account_%d_item_changelog_tbl" "(" "item_id varchar(64) not null," "operation_id integer not null," "status varchar(15) not null default \'SYNC_REQUIRED\'," "last_update date not null default current_timestamp,"
95 "access_name varchar(64) not null," "constraint account_%d_item_changelog_tbl_pk primary key(item_id)," "constraint account_%d_item_changelog_tbl_item_id_fk foreign key(item_id) references item_tbl(item_id)" ");",
97 /* 6. create last_anchor_tbl */
98 "create table last_anchor_tbl" "(" "account_id integer not null," "data_store_id integer not null," "last_anchor_server varchar(20) default null," "last_anchor_client varchar(20) default null," "last_update date not null default current_timestamp,"
99 "access_name varchar(64) not null," "constraint last_anchor_tbl_pk primary key(account_id, data_store_id)," "constraint last_anchor_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)" ");",
101 /* 7. create mapping_tbl */
102 "create table mapping_tbl" "(" "account_id integer not null," "data_store_id integer not null," "luid varchar(64) default null," "guid varchar(64) default null," "last_update date not null default current_timestamp,"
103 "access_name varchar(64) not null," "constraint mapping_tbl_pk primary key(account_id, luid)," "constraint mapping_tbl_account_id_fk foreign key(account_id) references account_tbl(account_id)" ");",
105 /* 8. create id_provider_tbl */
106 "create table id_provider_tbl" "(" "id_provider_code integer not null," "id_capacity integer not null," "bit_per_page integer not null," "last_id integer not null," "free_bit_cnt integer not null,"
107 "constraint id_provider_tbl_pk primary key(id_provider_code)" ");",
109 /* 9. create id_page_tbl */
110 "create table id_page_tbl" "(" "page_index integer not null," "id_provider_code integer not null," "page_bit BLOB," "constraint id_page_tbl_pk primary key(page_index, id_provider_code),"
111 "constraint id_page_tbl_fk foreign key(id_provider_code) references id_provider_tbl(id_provider_code)" ");"
114 static char *g_daci_drop_table[] = {
115 /* 1. drop account_tbl */
116 "drop table account_tbl",
118 /* 2. drop folder_tbl */
119 "drop table folder_tbl",
121 /* 3. drop item_tbl */
122 "drop table item_tbl",
124 /* 4. drop config_tbl */
125 "drop table config_tbl",
127 /* 5. drop account_item_changelog_tbl */
128 "drop table account_%d_item_changelog_tbl",
130 /* 6. drop last_anchor_tbl */
131 "drop table last_anchor_tbl",
133 /* 7. drop mapping_tbl */
134 "drop table mapping_tbl",
136 /* 8. drop id_provider_tbl */
137 "drop table id_provider_tbl",
139 /* 9. drop id_page_tbl */
140 "drop table id_page_tbl"
143 static char *g_daci_delete_table[] = {
144 /* 1. delete account_tbl */
145 "delete from account_tbl",
147 /* 2. delete folder_tbl */
148 "delete from folder_tbl",
150 /* 3. delete item_tbl */
151 "delete from item_tbl",
153 /* 4. delete config_tbl */
154 "delete from config_tbl",
156 /* 5. delete account_item_changelog_tbl */
157 "delete from account_%d_item_changelog_tbl",
159 /* 6. delete last_anchor_tbl */
160 "delete from last_anchor_tbl",
162 /* 7. delete mapping_tbl */
163 "delete from mapping_tbl",
165 /* 8. delete id_provider_tbl */
166 "delete from id_provider_tbl",
168 /* 9. delete id_page_tbl */
169 "delete from id_page_tbl"
172 sync_agent_da_return_e da_open_agent(SYNC_AGENT_DA_HANDLER ** daci_handler)
178 if (*daci_handler == NULL) {
181 /* ret = db_util_open(DACI_FILE_PATH, &(*daci_handler), 0); */
183 ret = sqlite3_open(daci_file_path, daci_handler);
184 if (ret != SQLITE_OK)
187 /* register busy handler */
188 ret = sqlite3_busy_handler(*daci_handler, _busy_handler, 0);
189 if (ret != SQLITE_OK) {
190 _DEBUG_INFO("Fail to register busy handler");
194 _DEBUG_INFO("agent_db_open_success");
197 _DEBUG_INFO("agent_db_already_opened");
202 return SYNC_AGENT_DA_SUCCESS;
206 _DEBUG_ERROR("agent_open failed(%d) : %s", ret, sqlite3_errmsg(*daci_handler));
208 sqlite3_close(*daci_handler);
211 return SYNC_AGENT_DA_ERR_OPEN_FAILED;
214 sync_agent_da_return_e da_close_Agent(SYNC_AGENT_DA_HANDLER * daci_handler)
218 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_CLOSE_FAILED, "SYNC_AGENT_DA_HANDLER is NULL !!");
221 ret = sqlite3_close(daci_handler);
224 if (ret != SQLITE_OK) {
225 _DEBUG_ERROR("agent_db_agent_close failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
226 return SYNC_AGENT_DA_ERR_CLOSE_FAILED;
229 _DEBUG_INFO("agent_db_agent_close_success");
233 return SYNC_AGENT_DA_SUCCESS;
236 sync_agent_da_return_e da_begin_transaction(SYNC_AGENT_DA_HANDLER * daci_handler)
240 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_TRANSACTION_FAILED, "SYNC_AGENT_DA_HANDLER is NULL !!");
242 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
244 int err_mutex = pthread_mutex_lock(&transaction_lock);
246 _DEBUG_INFO("Failed pthread_mutex_lock : %d", err_mutex);
249 use_transaction_thread_id = SYNC_AGENT_DA_GET_THREAD_ID;
251 ret = __query_exec(daci_handler, "begin immediate", "agent_db_begin_transaction failed");
253 if (ret == SYNC_AGENT_DA_ERR_QUERY_FAILED)
254 ret = SYNC_AGENT_DA_ERR_TRANSACTION_FAILED;
261 sync_agent_da_return_e da_end_transaction(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_transaction_e transaction)
265 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_TRANSACTION_FAILED, "SYNC_AGENT_DA_HANDLER is NULL !!");
267 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
271 if (transaction == SYNC_AGENT_DA_TRANSACTION_COMMIT) {
272 query = "commit transaction";
273 err_msg = "agent_db_commit_transaction failed";
274 } else if (transaction == SYNC_AGENT_DA_TRANSACTION_ROLLBACK) {
275 query = "rollback transaction";
276 err_msg = "agent_db_rollback_transaction failed";
279 ret = __query_exec(daci_handler, query, err_msg);
281 use_transaction_thread_id = 0;
282 int err_mutex = pthread_mutex_unlock(&transaction_lock);
284 _DEBUG_INFO("Failed pthread_mutex_unlock : %d", err_mutex);
287 if (ret == SYNC_AGENT_DA_ERR_QUERY_FAILED) {
288 if (transaction == SYNC_AGENT_DA_TRANSACTION_COMMIT) {
289 query = "rollback transaction";
290 err_msg = "agent_db_rollback_transaction failed";
291 ret = __query_exec(daci_handler, query, err_msg);
292 if (ret == SYNC_AGENT_DA_SUCCESS)
293 _DEBUG_INFO("agent_db_rollback_transaction success");
295 ret = SYNC_AGENT_DA_ERR_TRANSACTION_FAILED;
303 void da_set_agent_db_file_path(char *file_path)
307 retm_if(file_path == NULL, "file_path is NULL !!");
309 daci_file_path = file_path;
314 sync_agent_da_return_e da_create_agent_default_table(SYNC_AGENT_DA_HANDLER * daci_handler)
318 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
320 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
322 if ((da_begin_transaction(daci_handler) != SYNC_AGENT_DA_SUCCESS)) {
323 _DEBUG_ERROR("agent_db_default_tbl_create failed");
324 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
327 /* 1. create account_tbl */
328 if (__exist_table(daci_handler, "account_tbl") == 0) {
329 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT], "account_tbl_create failed");
330 if (ret != SYNC_AGENT_DA_SUCCESS)
334 /* 2. create folder_tbl */
335 if (__exist_table(daci_handler, "folder_tbl") == 0) {
336 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_FOLDER], "folder_tbl_create failed");
337 if (ret != SYNC_AGENT_DA_SUCCESS)
341 /* 3. create item_tbl */
342 if (__exist_table(daci_handler, "item_tbl") == 0) {
343 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ITEM], "item_tbl_create failed");
344 if (ret != SYNC_AGENT_DA_SUCCESS)
348 /* 4. create config_tbl */
349 if (__exist_table(daci_handler, "config_tbl") == 0) {
350 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_CONFIG], "config_tbl_create failed");
351 if (ret != SYNC_AGENT_DA_SUCCESS)
355 /* 5. create last_anchor_tbl */
356 if (__exist_table(daci_handler, "last_anchor_tbl") == 0) {
357 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR], "last_anchor_tbl_create failed");
358 if (ret != SYNC_AGENT_DA_SUCCESS)
362 /* 6. create mapping_tbl */
363 if (__exist_table(daci_handler, "mapping_tbl") == 0) {
364 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_MAPPING], "mapping_tbl_create failed");
365 if (ret != SYNC_AGENT_DA_SUCCESS)
369 /* 7. create id_provider_tbl */
370 if (__exist_table(daci_handler, "id_provider_tbl") == 0) {
371 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ID_PROVIDER], "id_provider_tbl_create failed");
372 if (ret != SYNC_AGENT_DA_SUCCESS)
376 /* 8. create id_page_tbl */
377 if (__exist_table(daci_handler, "id_page_tbl") == 0) {
378 ret = __query_exec(daci_handler, g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ID_PAGE], "id_page_tbl_create failed");
379 if (ret != SYNC_AGENT_DA_SUCCESS)
385 if (ret != SYNC_AGENT_DA_SUCCESS) {
386 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
387 ret = SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
389 ret = da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_COMMIT);
397 sync_agent_da_return_e da_empty_agent_default_table(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_table_name_e table_name)
401 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
403 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
405 /* delete default table */
406 ret = __query_exec(daci_handler, g_daci_delete_table[table_name], "deleting table failed");
407 if (ret != SYNC_AGENT_DA_SUCCESS) {
408 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
409 _DEBUG_ERROR("deleting table [query:%s] failed !!!\n", g_daci_delete_table[table_name]);
410 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
412 _DEBUG_INFO("table deleted [query:%s] !!!\n", g_daci_delete_table[table_name]);
419 sync_agent_da_return_e da_empty_all_agent_table(SYNC_AGENT_DA_HANDLER * daci_handler)
423 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
425 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
426 int *account_id_list = 0;
430 ret = da_begin_transaction(daci_handler);
431 if (ret != SYNC_AGENT_DA_SUCCESS) {
432 _DEBUG_ERROR("tbl_delete failed");
433 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
436 /* delete all changelog table */
437 account_id_list = da_get_account_account_id_list(daci_handler, &count);
438 if (account_id_list == NULL) {
439 _DEBUG_INFO("accountIdList empty !!!!!");
441 _DEBUG_INFO("accountListCount : %d", count);
442 for (i = 0; i < count; i++) {
443 ret = _delete_changlog_table(daci_handler, account_id_list[i]);
444 if (ret != SYNC_AGENT_DA_SUCCESS) {
446 if (account_id_list != NULL)
447 free(account_id_list);
449 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
454 /* delete all default table */
455 for (i = 0; i < SYNC_AGENT_DA_TABLE_NAME_MAX; i++) {
456 if (i == SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG || i == SYNC_AGENT_DA_TABLE_NAME_ID_PROVIDER || i == SYNC_AGENT_DA_TABLE_NAME_ID_PAGE)
459 ret = __query_exec(daci_handler, g_daci_delete_table[i], "deleting table failed");
460 if (ret != SYNC_AGENT_DA_SUCCESS) {
461 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
462 _DEBUG_ERROR("deleting table [query:%s] failed !!!\n", g_daci_delete_table[i]);
465 _DEBUG_INFO("table deleted [query:%s] !!!\n", g_daci_delete_table[i]);
470 if (ret != SYNC_AGENT_DA_SUCCESS)
471 ret = da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
473 ret = da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_COMMIT);
476 if (account_id_list != NULL)
477 free(account_id_list);
484 int da_add_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_fw_account_s * account)
488 retvm_if(daci_handler == NULL, -1, "SYNC_AGENT_DA_HANDLER is NULL !!");
489 retvm_if(account == NULL, -1, "sync_agent_fw_account_s is NULL !!");
491 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
493 char *query = "insert into account_tbl (account_id, email_address, password, enable, access_name) values (?, ?, ?, ?, ?)";
495 account->account_id = _get_next_account_id();
497 if (account->account_id > SYNC_AGENT_DA_MAX_ACCOUNT) {
498 _DEBUG_ERROR("account registration is full");
499 account->account_id = -1;
503 stmt = __query_prepare(daci_handler, query, strlen(query));
505 account->account_id = -1;
509 _stmt_bind_int(daci_handler, stmt, 1, account->account_id);
510 __stmt_bind_text(daci_handler, stmt, 2, account->email);
511 __stmt_bind_text(daci_handler, stmt, 3, account->password);
512 _stmt_bind_int(daci_handler, stmt, 4, account->enable);
513 __stmt_bind_text(daci_handler, stmt, 5, account->access_name);
515 ret = __stmt_write_step(daci_handler, stmt);
516 if (ret != SYNC_AGENT_DA_SUCCESS)
517 account->account_id = -1;
519 __stmt_finalize(daci_handler, stmt);
521 if (account->account_id != -1) {
522 _create_changelog_table(daci_handler, account->account_id);
529 return account->account_id;
532 sync_agent_da_return_e da_update_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_fw_account_s * account)
536 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
537 retvm_if(account == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_fw_account_s is NULL !!");
539 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
541 char *query = "update account_tbl set email_address = ?, password = ?, enable = ?, last_update = current_timestamp, access_name = ? where account_id = ?";
543 stmt = __query_prepare(daci_handler, query, strlen(query));
545 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
547 __stmt_bind_text(daci_handler, stmt, 1, account->email);
548 __stmt_bind_text(daci_handler, stmt, 2, account->password);
549 _stmt_bind_int(daci_handler, stmt, 3, account->enable);
550 __stmt_bind_text(daci_handler, stmt, 4, account->access_name);
551 _stmt_bind_int(daci_handler, stmt, 5, account->account_id);
553 ret = __stmt_write_step(daci_handler, stmt);
554 __stmt_finalize(daci_handler, stmt);
561 sync_agent_da_return_e da_delete_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
565 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
567 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
570 /* delete default table by accountId */
571 for (i = 0; i < SYNC_AGENT_DA_TABLE_NAME_MAX; i++) {
572 if (i == SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG) {
576 ret = _delete_account(daci_handler, i, account_id);
577 if (ret != SYNC_AGENT_DA_SUCCESS) {
578 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
583 /* drop changelog table */
584 ret = _drop_changelog_table(daci_handler, account_id);
585 if (ret != SYNC_AGENT_DA_SUCCESS) {
586 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
597 sync_agent_da_return_e da_get_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_fw_account_s ** account)
601 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
603 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
606 char *query = "select account_id, email_address, password, enable, access_name from account_tbl where account_id = ?";
608 stmt = __query_prepare(daci_handler, query, strlen(query));
611 _stmt_bind_int(daci_handler, stmt, 1, account_id);
613 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
614 (*account)->account_id = __stmt_column_int(stmt, 0);
615 (*account)->email = _stmt_column_text(stmt, 1);
616 (*account)->password = _stmt_column_text(stmt, 2);
617 (*account)->enable = __stmt_column_int(stmt, 3);
618 (*account)->access_name = _stmt_column_text(stmt, 4);
621 __stmt_finalize(daci_handler, stmt);
629 sync_agent_da_return_e da_get_all_fw_account(SYNC_AGENT_DA_HANDLER * daci_handler, GList ** list)
633 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
635 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
640 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
641 sync_agent_fw_account_s *fw_account = NULL;
642 GList *account_list = NULL;
644 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl");
646 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
648 if (data_count != 0) {
649 /* query initialize */
650 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
652 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, email_address, password, enable, access_name from account_tbl");
654 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
656 for (i = 0; i < data_count; i++) {
657 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
660 fw_account = (sync_agent_fw_account_s *) calloc(1, sizeof(sync_agent_fw_account_s));
661 fw_account->account_id = __stmt_column_int(stmt, 0);
662 fw_account->email = _stmt_column_text(stmt, 1);
663 fw_account->password = _stmt_column_text(stmt, 2);
664 fw_account->enable = __stmt_column_int(stmt, 3);
665 fw_account->access_name = _stmt_column_text(stmt, 4);
667 account_list = g_list_append(account_list, fw_account);
669 __stmt_finalize(daci_handler, stmt);
673 *list = account_list;
680 sync_agent_da_return_e da_get_fw_account_by_access_name(SYNC_AGENT_DA_HANDLER * daci_handler, char *access_name, GList ** list)
684 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
685 retvm_if(access_name == NULL, SYNC_AGENT_DA_ERRORS, "access name is NULL !!");
687 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
692 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
693 sync_agent_fw_account_s *fw_account = NULL;
694 GList *account_list = NULL;
696 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl where access_name = \'%s\'", access_name);
698 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
700 if (data_count != 0) {
701 /* query initialize */
702 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
704 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, email_address, password, enable, access_name from account_tbl where access_name = \'%s\'", access_name);
706 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
708 for (i = 0; i < data_count; i++) {
709 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
712 fw_account = (sync_agent_fw_account_s *) calloc(1, sizeof(sync_agent_fw_account_s));
713 fw_account->account_id = __stmt_column_int(stmt, 0);
714 fw_account->email = _stmt_column_text(stmt, 1);
715 fw_account->password = _stmt_column_text(stmt, 2);
716 fw_account->enable = __stmt_column_int(stmt, 3);
717 fw_account->access_name = _stmt_column_text(stmt, 4);
719 account_list = g_list_append(account_list, fw_account);
721 __stmt_finalize(daci_handler, stmt);
724 *list = account_list;
731 int *da_get_account_account_id_list(SYNC_AGENT_DA_HANDLER * daci_handler, int *count)
735 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
738 int *account_id_list = 0;
741 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
743 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl");
745 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
748 if (data_count != 0) {
749 /* query initialize */
750 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
752 account_id_list = SYNC_AGENT_DA_MEMORY_MALLOC(int *, sizeof(int), data_count);
753 if (account_id_list == NULL) {
754 _DEBUG_ERROR("memory_allocation failed");
755 return account_id_list;
758 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id from account_tbl");
760 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
762 for (i = 0; i < data_count; i++) {
763 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
766 account_id_list[i] = __stmt_column_int(stmt, 0);
768 __stmt_finalize(daci_handler, stmt);
774 return account_id_list;
777 int da_is_exist_account(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
781 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
785 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
787 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl where account_id = %d", account_id);
789 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
799 int da_get_account_count(SYNC_AGENT_DA_HANDLER * daci_handler)
803 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
806 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
808 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from account_tbl");
810 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
817 sync_agent_da_return_e da_add_folder(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_folder_s * folder, int count)
821 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
822 retvm_if(folder == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_folder_s is NULL !!");
825 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
829 for (i = 0; i < count; i++) {
830 if (da_is_exist_folder(daci_handler, folder[i].account_id, folder[i].folder_id) == 1)
831 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
834 query = "insert into folder_tbl (folder_id, data_store_id, account_id, folder_type_id, service_id, parent_folder_id, access_name) values (?, ?, ?, ?, ?, ?, ?)";
836 stmt = __query_prepare(daci_handler, query, strlen(query));
838 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
840 for (i = 0; i < count; i++) {
841 __stmt_bind_text(daci_handler, stmt, 1, folder[i].folder_id);
842 _stmt_bind_int(daci_handler, stmt, 2, folder[i].data_store_id);
843 _stmt_bind_int(daci_handler, stmt, 3, folder[i].account_id);
844 _stmt_bind_int(daci_handler, stmt, 4, folder[i].folder_type_id);
845 __stmt_bind_text(daci_handler, stmt, 5, folder[i].service_id);
846 __stmt_bind_text(daci_handler, stmt, 6, folder[i].parent_folder_id);
847 __stmt_bind_text(daci_handler, stmt, 7, folder[i].access_name);
849 ret = __stmt_write_step(daci_handler, stmt);
850 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
851 __stmt_finalize(daci_handler, stmt);
852 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
854 _stmt_reset(daci_handler, stmt);
856 __stmt_finalize(daci_handler, stmt);
863 sync_agent_da_return_e da_add_folder_new(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_folder_s * folder, int count, char **folder_id)
867 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
868 retvm_if(folder == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_folder_s is NULL !!");
871 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
876 for (i = 0; i < count; i++) {
877 if (folder[i].folder_id != NULL) {
878 if (da_is_exist_folder(daci_handler, folder[i].account_id, folder[i].folder_id) == 1)
879 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
883 query = "insert into folder_tbl (folder_id, data_store_id, account_id, folder_type_id, service_id, parent_folder_id, access_name) values (?, ?, ?, ?, ?, ?, ?)";
885 stmt = __query_prepare(daci_handler, query, strlen(query));
887 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
889 for (i = 0; i < count; i++) {
890 if (folder[i].folder_id != NULL) {
891 __stmt_bind_text(daci_handler, stmt, 1, folder[i].folder_id);
892 *folder_id = strdup(folder[i].folder_id);
894 f_id = sync_agent_generate_folder_luid();
896 __stmt_bind_text(daci_handler, stmt, 1, f_id);
898 *folder_id = strdup(f_id);
905 _DEBUG_ERROR("sync_agent_generate_folder_luid() failed !!");
906 return SYNC_AGENT_DA_ERRORS;
909 _stmt_bind_int(daci_handler, stmt, 2, folder[i].data_store_id);
910 _stmt_bind_int(daci_handler, stmt, 3, folder[i].account_id);
911 _stmt_bind_int(daci_handler, stmt, 4, folder[i].folder_type_id);
912 __stmt_bind_text(daci_handler, stmt, 5, folder[i].service_id);
913 __stmt_bind_text(daci_handler, stmt, 6, folder[i].parent_folder_id);
914 __stmt_bind_text(daci_handler, stmt, 7, folder[i].access_name);
916 ret = __stmt_write_step(daci_handler, stmt);
917 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
918 __stmt_finalize(daci_handler, stmt);
919 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
921 _stmt_reset(daci_handler, stmt);
923 __stmt_finalize(daci_handler, stmt);
930 sync_agent_da_return_e da_delete_folder_by_folder_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *folderId)
934 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
935 retvm_if(folderId == NULL, SYNC_AGENT_DA_ERRORS, "folder Id is NULL !!");
937 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
939 char *query = "delete from folder_tbl where folder_id = ?";
941 stmt = __query_prepare(daci_handler, query, strlen(query));
943 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
945 __stmt_bind_text(daci_handler, stmt, 1, folderId);
947 ret = __stmt_write_step(daci_handler, stmt);
948 __stmt_finalize(daci_handler, stmt);
955 char *da_get_folder_folder_id_by_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, char *serviceId, int folderTypeId)
959 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
960 retvm_if(serviceId == NULL, NULL, "service Id is NULL !!");
964 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
966 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and data_store_id = %d and service_id = %s and folder_type_id = %d", account_id, itemTypeId, serviceId, folderTypeId);
968 _DEBUG_INFO("Query : %s", g_daci_query);
970 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
972 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
973 folder_id = _stmt_column_text(stmt, 0);
975 __stmt_finalize(daci_handler, stmt);
983 sync_agent_da_id_list_s *da_get_folder_folder_id_by_folder_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int folderTypeId)
987 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
990 sync_agent_da_id_list_s *folder_id_list = 0;
991 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
993 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folderTypeId, itemTypeId);
995 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
997 if (data_count != 0) {
998 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folderTypeId, itemTypeId);
1000 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1002 folder_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
1003 if (folder_id_list == NULL) {
1004 _DEBUG_ERROR("CALLOC failed !!!");
1007 folder_id_list->id = (char **)calloc(data_count, sizeof(char *));
1008 if (folder_id_list->id == NULL) {
1010 if (folder_id_list != NULL)
1011 free(folder_id_list);
1013 _DEBUG_ERROR("CALLOC failed !!!");
1016 folder_id_list->count = data_count;
1018 for (; i < data_count; i++) {
1019 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1023 folder_id_list->id[i] = _stmt_column_text(stmt, 0);
1025 __stmt_finalize(daci_handler, stmt);
1031 return folder_id_list;
1034 sync_agent_da_return_e da_get_folder_folder_id_by_folder_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, int folder_type_id, GList ** list)
1038 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1042 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1044 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folder_type_id, item_type_id);
1046 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1048 if (data_count != 0) {
1049 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and folder_type_id = %d and data_store_id = %d", account_id, folder_type_id, item_type_id);
1051 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1054 for (; i < data_count; i++) {
1055 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1060 item_id = _stmt_column_text(stmt, 0);
1062 *list = g_list_append(*list, item_id);
1064 __stmt_finalize(daci_handler, stmt);
1070 return SYNC_AGENT_DA_SUCCESS;
1073 char *da_get_folder_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *folderId)
1077 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1078 retvm_if(folderId == NULL, NULL, "folder Id is NULL !!");
1081 char *query = "select service_id from folder_tbl where folder_id = ?";
1082 char *service_id = 0;
1084 stmt = __query_prepare(daci_handler, query, strlen(query));
1086 __stmt_bind_text(daci_handler, stmt, 1, folderId);
1088 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1089 service_id = _stmt_column_text(stmt, 0);
1091 __stmt_finalize(daci_handler, stmt);
1099 sync_agent_da_id_list_s *da_get_folder_folder_id_list_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
1103 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1106 sync_agent_da_id_list_s *folder_id_list = 0;
1107 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1109 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
1111 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1113 if (data_count != 0) {
1114 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1116 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
1118 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1120 folder_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
1121 if (folder_id_list == NULL) {
1122 _DEBUG_ERROR("CALLOC failed !!!");
1125 folder_id_list->id = (char **)calloc(data_count, sizeof(char *));
1126 if (folder_id_list->id == NULL) {
1128 if (folder_id_list != NULL)
1129 free(folder_id_list);
1131 _DEBUG_ERROR("CALLOC failed !!!");
1134 folder_id_list->count = data_count;
1136 for (; i < data_count; i++) {
1137 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1141 folder_id_list->id[i] = _stmt_column_text(stmt, 0);
1143 __stmt_finalize(daci_handler, stmt);
1149 return folder_id_list;
1152 sync_agent_da_return_e da_get_folder_folder_id_list_by_item_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
1156 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1160 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1162 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and data_store_id = %d", account_id, item_type_id);
1164 int data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1166 if (data_count != 0) {
1167 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1169 snprintf(g_daci_query, sizeof(g_daci_query), "select folder_id from folder_tbl where account_id = %d and data_store_id = %d", account_id, item_type_id);
1171 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1174 for (; i < data_count; i++) {
1175 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
1180 item_id = _stmt_column_text(stmt, 0);
1182 *list = g_list_append(*list, item_id);
1184 __stmt_finalize(daci_handler, stmt);
1190 return SYNC_AGENT_DA_SUCCESS;
1193 sync_agent_da_folder_s *da_get_folder_mapping_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folderId, int *count)
1197 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1198 retvm_if(folderId == NULL, NULL, "folder Id is NULL !!");
1201 sync_agent_da_folder_s *folder = 0;
1204 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1206 snprintf(g_daci_query, sizeof(g_daci_query),
1207 "select count(*) from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1208 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folderId, account_id, account_id, folderId);
1210 _DEBUG_INFO("[RJW] %s", g_daci_query);
1212 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1213 *count = data_count;
1215 if (data_count != 0) {
1216 /* query initialize */
1217 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1219 folder = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_folder_s *, sizeof(sync_agent_da_folder_s), data_count);
1220 if (folder == NULL) {
1221 _DEBUG_ERROR("memory_allocation failed");
1225 snprintf(g_daci_query, sizeof(g_daci_query),
1226 "select * from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1227 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folderId, account_id, account_id, folderId);
1229 _DEBUG_INFO("[RJW] %s", g_daci_query);
1231 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1233 for (i = 0; i < data_count; i++) {
1234 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
1237 folder[i].folder_id = _stmt_column_text(stmt, 0);
1238 folder[i].data_store_id = __stmt_column_int(stmt, 1);
1239 folder[i].account_id = __stmt_column_int(stmt, 2);
1240 folder[i].folder_type_id = __stmt_column_int(stmt, 3);
1241 folder[i].service_id = _stmt_column_text(stmt, 4);
1242 folder[i].parent_folder_id = _stmt_column_text(stmt, 5);
1243 folder[i].access_name = _stmt_column_text(stmt, 7);
1245 __stmt_finalize(daci_handler, stmt);
1254 sync_agent_da_return_e da_get_folder_mapping_service_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, GList ** list)
1258 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1259 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
1262 sync_agent_da_folder_s *folder;
1263 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
1266 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1268 snprintf(g_daci_query, sizeof(g_daci_query),
1269 "select count(*) from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1270 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folder_id, account_id, account_id, folder_id);
1272 _DEBUG_INFO("[RJW] %s", g_daci_query);
1274 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1276 if (data_count != 0) {
1277 /* query initialize */
1278 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
1280 snprintf(g_daci_query, sizeof(g_daci_query),
1281 "select * from folder_tbl where folder_type_id in (select folder_type_id from folder_tbl where account_id = %d and folder_id = \'%s\') "
1282 "and (account_id != %d) and (account_id != %d) and data_store_id in (select data_store_id from folder_tbl where folder_id = \'%s\')", account_id, folder_id, account_id, account_id, folder_id);
1284 _DEBUG_INFO("[RJW] %s", g_daci_query);
1286 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
1288 for (i = 0; i < data_count; i++) {
1289 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
1293 ret = sync_agent_create_folder(&folder);
1294 if (ret != SYNC_AGENT_DA_SUCCESS) {
1295 _DEBUG_ERROR("sync_agent_create_folder() failed !!");
1299 folder->folder_id = _stmt_column_text(stmt, 0);
1300 folder->data_store_id = __stmt_column_int(stmt, 1);
1301 folder->account_id = __stmt_column_int(stmt, 2);
1302 folder->folder_type_id = __stmt_column_int(stmt, 3);
1303 folder->service_id = _stmt_column_text(stmt, 4);
1304 folder->parent_folder_id = _stmt_column_text(stmt, 5);
1305 folder->access_name = _stmt_column_text(stmt, 7);
1307 *list = g_list_append(*list, folder);
1309 __stmt_finalize(daci_handler, stmt);
1312 _DEBUG_INFO("no data !!");
1313 ret = SYNC_AGENT_DA_SUCCESS;
1321 sync_agent_da_return_e da_get_folder_by_folder_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *folder_id, sync_agent_da_folder_s ** sync_agent_folder)
1325 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1326 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
1329 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1330 char *query = "select * from folder_tbl where folder_id = ?";
1332 stmt = __query_prepare(daci_handler, query, strlen(query));
1334 __stmt_bind_text(daci_handler, stmt, 1, folder_id);
1336 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1337 (*sync_agent_folder)->folder_id = _stmt_column_text(stmt, 0);
1338 (*sync_agent_folder)->data_store_id = __stmt_column_int(stmt, 1);
1339 (*sync_agent_folder)->account_id = __stmt_column_int(stmt, 2);
1340 (*sync_agent_folder)->folder_type_id = __stmt_column_int(stmt, 3);
1341 (*sync_agent_folder)->service_id = _stmt_column_text(stmt, 4);
1342 (*sync_agent_folder)->parent_folder_id = _stmt_column_text(stmt, 5);
1343 (*sync_agent_folder)->access_name = _stmt_column_text(stmt, 7);
1345 __stmt_finalize(daci_handler, stmt);
1353 int da_is_exist_folder(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folderId)
1357 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
1358 retvm_if(folderId == NULL, 0, "folder Id is NULL !!");
1362 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1364 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from folder_tbl where account_id = %d and folder_id = \'%s\'", account_id, folderId);
1366 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
1368 if (data_count == 0)
1371 _DEBUG_INFO("[%s] End !\n", __func__);
1378 sync_agent_da_return_e da_add_item(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_item_s * item, int count)
1382 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1383 retvm_if(item == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_s is NULL !!");
1386 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1389 for (i = 0; i < count; i++) {
1390 if (da_is_exist_item(daci_handler, item[i].item_id) == 1)
1391 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
1394 char *query = "insert into item_tbl (item_id, data_store_id, account_id, folder_id, service_id, access_name) values (?, ?, ?, ?, ?, ?)";
1396 stmt = __query_prepare(daci_handler, query, strlen(query));
1398 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1401 for (i = 0; i < count; i++) {
1402 __stmt_bind_text(daci_handler, stmt, 1, item[i].item_id);
1403 _stmt_bind_int(daci_handler, stmt, 2, item[i].data_store_id);
1404 _stmt_bind_int(daci_handler, stmt, 3, item[i].account_id);
1405 __stmt_bind_text(daci_handler, stmt, 4, item[i].folder_id);
1406 __stmt_bind_text(daci_handler, stmt, 5, item[i].service_id);
1407 __stmt_bind_text(daci_handler, stmt, 6, item[i].access_name);
1409 ret = __stmt_write_step(daci_handler, stmt);
1410 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
1411 __stmt_finalize(daci_handler, stmt);
1412 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1414 _stmt_reset(daci_handler, stmt);
1417 __stmt_finalize(daci_handler, stmt);
1424 sync_agent_da_return_e da_add_item_new(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_item_s * item, int count, char **item_id)
1428 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1429 retvm_if(item == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_s is NULL !!");
1432 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1433 char **id_list = NULL;
1436 for (i = 0; i < count; i++) {
1437 if (item[i].item_id != NULL) {
1438 if (da_is_exist_item(daci_handler, item[i].item_id) == 1)
1439 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
1443 char *query = "insert into item_tbl (item_id, data_store_id, account_id, folder_id, service_id, access_name) values (?, ?, ?, ?, ?, ?)";
1445 stmt = __query_prepare(daci_handler, query, strlen(query));
1447 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1450 for (i = 0; i < count; i++) {
1451 if (item[i].item_id != NULL) {
1452 __stmt_bind_text(daci_handler, stmt, 1, item[i].item_id);
1453 *item_id = strdup(item[i].item_id);
1455 id_list = sync_agent_generate_item_luid(1, 1);
1456 if (id_list != NULL) {
1457 __stmt_bind_text(daci_handler, stmt, 1, id_list[0]);
1459 *item_id = strdup(id_list[0]);
1461 if (id_list[0] != NULL)
1464 if (id_list != NULL)
1469 _DEBUG_ERROR("sync_agent_generate_item_luid() failed !!");
1470 return SYNC_AGENT_DA_ERRORS;
1473 _stmt_bind_int(daci_handler, stmt, 2, item[i].data_store_id);
1474 _stmt_bind_int(daci_handler, stmt, 3, item[i].account_id);
1475 __stmt_bind_text(daci_handler, stmt, 4, item[i].folder_id);
1476 __stmt_bind_text(daci_handler, stmt, 5, item[i].service_id);
1477 __stmt_bind_text(daci_handler, stmt, 6, item[i].access_name);
1479 ret = __stmt_write_step(daci_handler, stmt);
1480 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
1481 __stmt_finalize(daci_handler, stmt);
1482 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1484 _stmt_reset(daci_handler, stmt);
1487 __stmt_finalize(daci_handler, stmt);
1494 sync_agent_da_return_e da_delete_item_by_Item_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1498 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1499 retvm_if(itemId == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1501 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1503 char *query = "delete from item_tbl where item_id = ?";
1505 stmt = __query_prepare(daci_handler, query, strlen(query));
1507 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1509 __stmt_bind_text(daci_handler, stmt, 1, itemId);
1511 ret = __stmt_write_step(daci_handler, stmt);
1512 __stmt_finalize(daci_handler, stmt);
1519 sync_agent_da_return_e da_delete_item_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
1523 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1525 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1529 sync_agent_da_item_info_s *item_info = 0;
1530 char *query = "delete from item_tbl where account_id = ? and data_store_id = ?";
1532 /* delete changelog */
1533 item_info = da_get_item_info_by_item_type_id(daci_handler, account_id, itemTypeId, &count);
1535 for (i = 0; i < count; i++) {
1536 ret = da_delete_item_changelog_by_item_id(daci_handler, account_id, item_info[i].itemId);
1537 if (ret != SYNC_AGENT_DA_SUCCESS)
1542 stmt = __query_prepare(daci_handler, query, strlen(query));
1546 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1547 _stmt_bind_int(daci_handler, stmt, 2, itemTypeId);
1549 ret = __stmt_write_step(daci_handler, stmt);
1550 if (ret != SYNC_AGENT_DA_SUCCESS) {
1554 sync_agent_free_memory_item_info(item_info, count);
1558 return __stmt_finalize(daci_handler, stmt);
1562 sync_agent_free_memory_item_info(item_info, count);
1565 __stmt_finalize(daci_handler, stmt);
1567 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1570 sync_agent_da_return_e da_delete_item_by_item_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id)
1574 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1576 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1579 char *query = "delete from item_tbl where account_id = ? and data_store_id = ?";
1581 stmt = __query_prepare(daci_handler, query, strlen(query));
1585 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1586 _stmt_bind_int(daci_handler, stmt, 2, item_type_id);
1588 ret = __stmt_write_step(daci_handler, stmt);
1589 if (ret != SYNC_AGENT_DA_SUCCESS) {
1595 return __stmt_finalize(daci_handler, stmt);
1600 __stmt_finalize(daci_handler, stmt);
1602 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1605 sync_agent_da_return_e da_delete_item_by_item_type_id_and_delete_changelog(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
1609 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1611 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1614 sync_agent_da_item_info_s *item_info = 0;
1616 /* delete changelog */
1617 item_info = da_get_item_info_by_item_type_id_and_operation_id(daci_handler, account_id, itemTypeId, 303, &count);
1619 for (i = 0; i < count; i++) {
1620 ret = da_delete_item_by_Item_id(daci_handler, item_info[i].itemId);
1621 if (ret != SYNC_AGENT_DA_SUCCESS)
1624 ret = da_delete_item_changelog_by_item_id(daci_handler, account_id, item_info[i].itemId);
1625 if (ret != SYNC_AGENT_DA_SUCCESS)
1630 sync_agent_free_memory_item_info(item_info, count);
1638 sync_agent_free_memory_item_info(item_info, count);
1640 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
1643 char *da_get_item_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *serviceId, int itemTypeId)
1647 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1648 retvm_if(serviceId == NULL, NULL, "service Id is NULL !!");
1651 char *query = "select item_id from item_tbl where account_id = ? and service_id = ? and data_store_id = ?";
1654 stmt = __query_prepare(daci_handler, query, strlen(query));
1656 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1657 __stmt_bind_text(daci_handler, stmt, 2, serviceId);
1658 _stmt_bind_int(daci_handler, stmt, 3, itemTypeId);
1660 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1661 item_id = _stmt_column_text(stmt, 0);
1663 __stmt_finalize(daci_handler, stmt);
1671 sync_agent_da_return_e da_get_item_item_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *service_id, int item_type_id, char **item_id)
1675 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1676 retvm_if(service_id == NULL, SYNC_AGENT_DA_ERRORS, "service Id is NULL !!");
1678 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
1680 char *query = "select item_id from item_tbl where account_id = ? and service_id = ? and data_store_id = ?";
1682 stmt = __query_prepare(daci_handler, query, strlen(query));
1684 _stmt_bind_int(daci_handler, stmt, 1, account_id);
1685 __stmt_bind_text(daci_handler, stmt, 2, service_id);
1686 _stmt_bind_int(daci_handler, stmt, 3, item_type_id);
1688 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1689 *item_id = _stmt_column_text(stmt, 0);
1690 ret = SYNC_AGENT_DA_SUCCESS;
1693 __stmt_finalize(daci_handler, stmt);
1701 char *da_get_item_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1705 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1706 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
1709 char *query = "select service_id from item_tbl where item_id = ?";
1710 char *service_id = 0;
1712 stmt = __query_prepare(daci_handler, query, strlen(query));
1714 __stmt_bind_text(daci_handler, stmt, 1, itemId);
1716 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
1717 service_id = _stmt_column_text(stmt, 0);
1719 __stmt_finalize(daci_handler, stmt);
1727 sync_agent_da_item_s *da_get_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
1731 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1732 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
1735 char *query = "select * from item_tbl where item_id = ?";
1736 sync_agent_da_item_s *item = 0;
1738 stmt = __query_prepare(daci_handler, query, strlen(query));
1740 __stmt_bind_text(daci_handler, stmt, 1, itemId);
1742 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1743 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), 1);
1745 __stmt_finalize(daci_handler, stmt);
1747 _DEBUG_ERROR("memory_allocation failed");
1751 item->item_id = _stmt_column_text(stmt, 0);
1752 item->data_store_id = __stmt_column_int(stmt, 1);
1753 item->account_id = __stmt_column_int(stmt, 2);
1754 item->folder_id = _stmt_column_text(stmt, 3);
1755 item->service_id = _stmt_column_text(stmt, 4);
1756 item->access_name = _stmt_column_text(stmt, 6);
1758 __stmt_finalize(daci_handler, stmt);
1766 sync_agent_da_return_e da_get_item_new(SYNC_AGENT_DA_HANDLER * daci_handler, char *item_id, sync_agent_da_item_s ** sync_agent_item)
1770 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1771 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
1773 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1775 char *query = "select * from item_tbl where item_id = ?";
1777 stmt = __query_prepare(daci_handler, query, strlen(query));
1779 __stmt_bind_text(daci_handler, stmt, 1, item_id);
1781 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
1782 (*sync_agent_item)->item_id = _stmt_column_text(stmt, 0);
1783 (*sync_agent_item)->data_store_id = __stmt_column_int(stmt, 1);
1784 (*sync_agent_item)->account_id = __stmt_column_int(stmt, 2);
1785 (*sync_agent_item)->folder_id = _stmt_column_text(stmt, 3);
1786 (*sync_agent_item)->service_id = _stmt_column_text(stmt, 4);
1787 (*sync_agent_item)->access_name = _stmt_column_text(stmt, 6);
1789 __stmt_finalize(daci_handler, stmt);
1797 sync_agent_da_id_list_s *da_get_all_item_id(SYNC_AGENT_DA_HANDLER * daci_handler)
1801 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1803 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1804 sync_agent_da_id_list_s *id_list = 0;
1810 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1812 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl");
1814 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1816 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1817 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
1818 if (id_list == NULL) {
1819 _DEBUG_ERROR("memory_allocation failed");
1823 id_list->count = row_count;
1824 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
1826 for (i = 0; i < row_count; i++) {
1827 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
1835 __free_table(result);
1842 sync_agent_da_id_list_s *da_get_item_id_list(SYNC_AGENT_DA_HANDLER * daci_handler, char *folderId, sync_agent_da_column_name_e column_name)
1846 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1847 retvm_if(folderId == NULL, NULL, "folder Id is NULL !!");
1849 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1850 sync_agent_da_id_list_s *id_list = 0;
1851 char *column_str = 0;
1857 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1859 column_str = _get_column_name(column_name);
1861 snprintf(g_daci_query, sizeof(g_daci_query), "select %s from item_tbl where folder_id = \'%s\'", column_str, folderId);
1863 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1865 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1866 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
1867 if (id_list == NULL) {
1868 _DEBUG_ERROR("memory_allocation failed");
1872 id_list->count = row_count;
1873 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
1875 for (i = 0; i < row_count; i++) {
1876 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
1884 __free_table(result);
1891 sync_agent_da_return_e da_get_item_id_list_new(SYNC_AGENT_DA_HANDLER * daci_handler, char *folder_id, sync_agent_da_column_name_e column_name, GList ** list)
1895 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
1896 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
1898 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
1900 char *column_str = 0;
1906 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1908 column_str = _get_column_name(column_name);
1910 snprintf(g_daci_query, sizeof(g_daci_query), "select %s from item_tbl where folder_id = \'%s\'", column_str, folder_id);
1912 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1914 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1915 for (i = 0; i < row_count; i++) {
1917 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
1920 *list = g_list_append(*list, item_id);
1925 __free_table(result);
1932 sync_agent_da_item_s *da_get_item_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int *count)
1936 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1938 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1939 sync_agent_da_item_s *item = 0;
1941 char *new_table = 0;
1946 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
1948 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
1949 if (new_table == NULL)
1952 // snprintf(g_daci_query, sizeof(g_daci_query), "select item_id, data_store_id, account_id, folder_id, service_id, access_name from item_tbl where account_id = %d and data_store_id = %d", accountId, itemTypeId);
1953 snprintf(g_daci_query, sizeof(g_daci_query),
1954 "select item.item_id, item.data_store_id, item.account_id, item.folder_id, item.service_id, item.access_name " "from item_tbl as item " "left join %s as changelog " "using (item_id) "
1955 "where item.account_id = %d and item.data_store_id = %d and (changelog.operation_id is null or changelog.operation_id != 303)", new_table, account_id, itemTypeId);
1956 _DEBUG_INFO("g_daci_query = %s", g_daci_query);
1958 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
1961 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
1962 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), row_count);
1964 _DEBUG_ERROR("memory_allocation failed");
1968 for (i = 0; i < row_count; i++) {
1969 item[i].item_id = SYNC_AGENT_DA_STRDUP(result[index]);
1971 item[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
1973 item[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
1975 item[i].folder_id = SYNC_AGENT_DA_STRDUP(result[index]);
1977 item[i].service_id = SYNC_AGENT_DA_STRDUP(result[index]);
1979 item[i].access_name = SYNC_AGENT_DA_STRDUP(result[index]);
1986 __free_table(result);
1989 SYNC_AGENT_DA_MEMORY_FREE(new_table);
1996 sync_agent_da_return_e da_get_item_by_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
2000 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2002 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2003 sync_agent_da_item_s *item;
2005 char *new_table = 0;
2010 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2012 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2013 if (new_table == NULL)
2016 // snprintf(g_daci_query, sizeof(g_daci_query), "select item_id, data_store_id, account_id, folder_id, service_id, access_name from item_tbl where account_id = %d and data_store_id = %d", accountId, itemTypeId);
2017 snprintf(g_daci_query, sizeof(g_daci_query),
2018 "select item.item_id, item.data_store_id, item.account_id, item.folder_id, item.service_id, item.access_name " "from item_tbl as item " "left join %s as changelog " "using (item_id) "
2019 "where item.account_id = %d and item.data_store_id = %d and (changelog.operation_id is null or changelog.operation_id != 303)", new_table, account_id, item_type_id);
2020 _DEBUG_INFO("g_daci_query = %s", g_daci_query);
2022 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2024 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2025 for (i = 0; i < row_count; i++) {
2027 ret = sync_agent_create_item(&item);
2028 if (ret != SYNC_AGENT_DA_SUCCESS) {
2029 _DEBUG_ERROR("sync_agent_create_item() failed !!");
2033 item->item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2035 item->data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
2037 item->account_id = SYNC_AGENT_DA_ATOI(result[index]);
2039 item->folder_id = SYNC_AGENT_DA_STRDUP(result[index]);
2041 item->service_id = SYNC_AGENT_DA_STRDUP(result[index]);
2043 item->access_name = SYNC_AGENT_DA_STRDUP(result[index]);
2046 *list = g_list_append(*list, item);
2052 __free_table(result);
2055 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2062 sync_agent_da_item_info_s *da_get_item_info_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int *count)
2066 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2068 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2069 sync_agent_da_item_info_s *itemInfo = 0;
2070 char *new_table = 0;
2076 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2078 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2079 if (new_table == NULL)
2081 snprintf(g_daci_query, sizeof(g_daci_query),
2082 "select item.item_id, item.data_store_id, item.service_id, changelog.operation_id, changelog.status " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d", new_table,
2083 account_id, itemTypeId);
2085 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2087 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2088 itemInfo = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_info_s *, sizeof(sync_agent_da_item_info_s), row_count);
2089 if (itemInfo == NULL) {
2090 _DEBUG_ERROR("memory_allocation failed");
2093 for (i = 0; i < row_count; i++) {
2094 itemInfo[i].itemId = SYNC_AGENT_DA_STRDUP(result[index]);
2096 itemInfo[i].itemTypeId = SYNC_AGENT_DA_ATOI(result[index]);
2098 itemInfo[i].serviceId = SYNC_AGENT_DA_STRDUP(result[index]);
2100 itemInfo[i].operationId = SYNC_AGENT_DA_ATOI(result[index]);
2102 itemInfo[i].syncStatus = SYNC_AGENT_DA_STRDUP(result[index]);
2110 __free_table(result);
2113 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2120 sync_agent_da_item_info_s *da_get_item_info_by_item_type_id_and_operation_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int operationId, int *count)
2124 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2126 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2127 sync_agent_da_item_info_s *itemInfo = 0;
2128 char *new_table = 0;
2134 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2136 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2137 if (new_table == NULL)
2139 snprintf(g_daci_query, sizeof(g_daci_query),
2140 "select item.item_id, item.data_store_id, item.service_id, changelog.operation_id, changelog.status " "from item_tbl as item " "join %s as changelog " "using (item_id) "
2141 "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id, itemTypeId, operationId);
2143 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2145 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2146 itemInfo = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_info_s *, sizeof(sync_agent_da_item_info_s), row_count);
2147 if (itemInfo == NULL) {
2148 _DEBUG_ERROR("memory_allocation failed");
2151 for (i = 0; i < row_count; i++) {
2152 itemInfo[i].itemId = SYNC_AGENT_DA_STRDUP(result[index]);
2154 itemInfo[i].itemTypeId = SYNC_AGENT_DA_ATOI(result[index]);
2156 itemInfo[i].serviceId = SYNC_AGENT_DA_STRDUP(result[index]);
2158 itemInfo[i].operationId = SYNC_AGENT_DA_ATOI(result[index]);
2160 itemInfo[i].syncStatus = SYNC_AGENT_DA_STRDUP(result[index]);
2168 __free_table(result);
2171 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2178 sync_agent_da_return_e da_get_item_info_by_item_type_id_and_operation_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, int operation_id, GList ** list)
2182 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2184 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2185 char *new_table = 0;
2191 char *item_id = NULL;
2192 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2194 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2195 if (new_table == NULL) {
2196 _DEBUG_ERROR("__replace_table_name() failed !!");
2197 return SYNC_AGENT_DA_ERRORS;
2199 snprintf(g_daci_query, sizeof(g_daci_query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id,
2200 item_type_id, operation_id);
2202 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
2203 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2204 for (i = 0; i < row_count; i++) {
2206 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2209 *list = g_list_append(*list, item_id);
2212 _DEBUG_INFO("no data !!");
2216 __free_table(result);
2219 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2226 sync_agent_da_item_s *da_get_item_mapping_service_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId, int *count)
2230 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2231 retvm_if(itemId == NULL, NULL, "item Id is NULL !!");
2234 sync_agent_da_item_s *item = 0;
2237 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2239 snprintf(g_daci_query, sizeof(g_daci_query),
2240 "select count(*) from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2241 "and (account_id != %d and item_id != \'%s\')", account_id, itemId, account_id, itemId, account_id, itemId);
2243 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2244 *count = data_count;
2246 if (data_count != 0) {
2247 /* query initialize */
2248 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2250 item = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_s *, sizeof(sync_agent_da_item_s), data_count);
2252 _DEBUG_ERROR("memory_allocation failed");
2256 snprintf(g_daci_query, sizeof(g_daci_query),
2257 "select * from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2258 "and (account_id != %d and item_id != \'%s\')", account_id, itemId, account_id, itemId, account_id, itemId);
2260 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2262 for (i = 0; i < data_count; i++) {
2263 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
2266 item[i].item_id = _stmt_column_text(stmt, 0);
2267 item[i].data_store_id = __stmt_column_int(stmt, 1);
2268 item[i].account_id = __stmt_column_int(stmt, 2);
2269 item[i].folder_id = _stmt_column_text(stmt, 3);
2270 item[i].service_id = _stmt_column_text(stmt, 4);
2271 item[i].access_name = _stmt_column_text(stmt, 6);
2274 __stmt_finalize(daci_handler, stmt);
2283 sync_agent_da_return_e da_get_item_mapping_service_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *item_id, GList ** list)
2287 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2288 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
2290 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2292 sync_agent_da_item_s *item;
2295 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2297 snprintf(g_daci_query, sizeof(g_daci_query),
2298 "select count(*) from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2299 "and (account_id != %d and item_id != \'%s\')", account_id, item_id, account_id, item_id, account_id, item_id);
2301 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2303 if (data_count != 0) {
2304 /* query initialize */
2305 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2307 snprintf(g_daci_query, sizeof(g_daci_query),
2308 "select * from item_tbl where data_store_id in (select data_store_id from item_tbl where account_id = %d and item_id = \'%s\') " "and service_id in (select service_id from item_tbl where account_id = %d and item_id = \'%s\') "
2309 "and (account_id != %d and item_id != \'%s\')", account_id, item_id, account_id, item_id, account_id, item_id);
2311 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2313 for (i = 0; i < data_count; i++) {
2314 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
2318 ret = sync_agent_create_item(&item);
2319 if (ret != SYNC_AGENT_DA_SUCCESS) {
2320 _DEBUG_ERROR("sync_agent_create_item() failed !!");
2324 item->item_id = _stmt_column_text(stmt, 0);
2325 item->data_store_id = __stmt_column_int(stmt, 1);
2326 item->account_id = __stmt_column_int(stmt, 2);
2327 item->folder_id = _stmt_column_text(stmt, 3);
2328 item->service_id = _stmt_column_text(stmt, 4);
2329 item->access_name = _stmt_column_text(stmt, 6);
2331 *list = g_list_append(*list, item);
2334 __stmt_finalize(daci_handler, stmt);
2337 _DEBUG_ERROR("no data !!");
2338 ret = SYNC_AGENT_DA_SUCCESS;
2346 sync_agent_da_id_list_s *da_get_item_id_list_by_datastore_id(SYNC_AGENT_DA_HANDLER * daci_handler, int data_store_id)
2350 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2353 sync_agent_da_id_list_s *item_id_list = 0;
2356 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2358 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where data_store_id = %d", data_store_id);
2360 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2362 if (data_count != 0) {
2363 /* query initialize */
2364 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2366 item_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
2367 if (item_id_list == NULL) {
2368 _DEBUG_ERROR("CALLOC failed !!!");
2371 item_id_list->id = (char **)calloc(data_count, sizeof(char *));
2372 if (item_id_list->id == NULL) {
2374 if (item_id_list != NULL)
2377 _DEBUG_ERROR("CALLOC failed !!!");
2380 item_id_list->count = data_count;
2382 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where data_store_id = %d", data_store_id);
2384 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2386 for (i = 0; i < data_count; i++) {
2387 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2391 item_id_list->id[i] = _stmt_column_text(stmt, 0);
2394 __stmt_finalize(daci_handler, stmt);
2400 return item_id_list;
2403 sync_agent_da_return_e da_get_item_id_list_by_datastore_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int data_store_id, GList ** list)
2407 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2413 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2415 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where data_store_id = %d", data_store_id);
2417 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2419 if (data_count != 0) {
2420 /* query initialize */
2421 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2423 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where data_store_id = %d", data_store_id);
2425 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2427 for (i = 0; i < data_count; i++) {
2428 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2433 item_id = _stmt_column_text(stmt, 0);
2435 *list = g_list_append(*list, item_id);
2438 __stmt_finalize(daci_handler, stmt);
2444 return SYNC_AGENT_DA_SUCCESS;
2447 sync_agent_da_id_list_s *da_get_item_id_list_by_datastore_id_with_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id)
2451 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2454 sync_agent_da_id_list_s *item_id_list = 0;
2457 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2459 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2461 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2463 if (data_count != 0) {
2464 /* query initialize */
2465 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2467 item_id_list = (sync_agent_da_id_list_s *) calloc(1, sizeof(sync_agent_da_id_list_s));
2468 if (item_id_list == NULL) {
2469 _DEBUG_ERROR("CALLOC failed !!!");
2472 item_id_list->id = (char **)calloc(data_count, sizeof(char *));
2473 if (item_id_list->id == NULL) {
2475 if (item_id_list != NULL)
2478 _DEBUG_ERROR("CALLOC failed !!!");
2481 item_id_list->count = data_count;
2483 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2485 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2487 for (i = 0; i < data_count; i++) {
2488 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2492 item_id_list->id[i] = _stmt_column_text(stmt, 0);
2495 __stmt_finalize(daci_handler, stmt);
2501 return item_id_list;
2504 sync_agent_da_return_e da_get_item_id_list_by_datastore_id_with_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id, GList ** list)
2508 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2514 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2516 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2518 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2520 if (data_count != 0) {
2521 /* query initialize */
2522 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2524 snprintf(g_daci_query, sizeof(g_daci_query), "select item_id from item_tbl where account_id = %d and data_store_id = %d", account_id, data_store_id);
2526 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2528 for (i = 0; i < data_count; i++) {
2529 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA) {
2534 item_id = _stmt_column_text(stmt, 0);
2536 *list = g_list_append(*list, item_id);
2539 __stmt_finalize(daci_handler, stmt);
2545 return SYNC_AGENT_DA_SUCCESS;
2548 sync_agent_da_id_list_s *da_get_item_id_list_by_operation_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id, int operation_id)
2552 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2554 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2555 sync_agent_da_id_list_s *id_list = 0;
2556 char *new_table = 0;
2562 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2564 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2565 if (new_table == NULL)
2568 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id,
2569 data_store_id, operation_id);
2571 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2572 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2573 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
2575 if (id_list == NULL) {
2576 _DEBUG_ERROR("memory_allocation failed");
2580 id_list->count = row_count;
2581 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2583 for (i = 0; i < row_count; i++) {
2584 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2590 if (result != NULL) {
2591 __free_table(result);
2594 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2601 sync_agent_da_return_e da_get_item_id_list_by_operation_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int data_store_id, int operation_id, GList ** list)
2605 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2607 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2609 char *new_table = 0;
2615 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2617 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2618 if (new_table == NULL)
2621 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and changelog.operation_id = %d", new_table, account_id,
2622 data_store_id, operation_id);
2624 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2625 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2626 for (i = 0; i < row_count; i++) {
2628 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2631 *list = g_list_append(*list, item_id);
2635 if (result != NULL) {
2636 __free_table(result);
2639 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2646 sync_agent_da_id_list_s *da_get_item_id_list_by_operation_id_and_folder_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, int data_store_id, int operation_id)
2650 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
2651 retvm_if(folder_id == NULL, NULL, "folder id is NULL !!");
2653 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2654 sync_agent_da_id_list_s *id_list = 0;
2655 char *new_table = 0;
2661 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2663 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2664 if (new_table == NULL)
2667 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and item.folder_id = \'%s\' and changelog.operation_id = %d",
2668 new_table, account_id, data_store_id, folder_id, operation_id);
2669 _DEBUG_INFO("request quary is [%s]\n", query);
2671 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2672 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2673 id_list = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_id_list_s *, sizeof(sync_agent_da_id_list_s), 1);
2675 if (id_list == NULL) {
2676 _DEBUG_ERROR("memory_allocation failed");
2680 id_list->count = row_count;
2681 id_list->id = SYNC_AGENT_DA_MEMORY_CALLOC(char **, sizeof(char *), row_count);
2683 for (i = 0; i < row_count; i++) {
2684 id_list->id[i] = SYNC_AGENT_DA_STRDUP(result[index]);
2690 if (result != NULL) {
2691 __free_table(result);
2694 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2701 sync_agent_da_return_e da_get_item_id_list_by_operation_id_and_folder_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, int data_store_id, int operation_id, GList ** list)
2705 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2706 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
2708 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2710 char *new_table = 0;
2716 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2718 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2719 if (new_table == NULL)
2722 snprintf(query, sizeof(query), "select item.item_id " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d and item.folder_id = \'%s\' and changelog.operation_id = %d",
2723 new_table, account_id, data_store_id, folder_id, operation_id);
2724 _DEBUG_INFO("request quary is [%s]\n", query);
2726 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2727 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2728 for (i = 0; i < row_count; i++) {
2730 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2733 *list = g_list_append(*list, item_id);
2737 if (result != NULL) {
2738 __free_table(result);
2741 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2748 sync_agent_da_return_e da_get_item_id_list_by_folder_id_and_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *folder_id, GList ** list)
2752 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2753 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
2755 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
2757 char *new_table = 0;
2763 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2765 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
2766 if (new_table == NULL)
2769 snprintf(query, sizeof(query), "select distinct item_tbl.item_id from item_tbl where item_tbl.account_id = %d and item_tbl.folder_id = \'%s\' and item_tbl.item_id not in (select distinct item.item_id from item_tbl as item join %s as changelog where changelog.item_id = item.item_id and changelog.operation_id = 303)", account_id, folder_id, new_table);
2770 _DEBUG_INFO("request quary is [%s]\n", query);
2772 ret = _get_table(daci_handler, query, &result, &row_count, &col_count);
2773 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
2774 for (i = 0; i < row_count; i++) {
2776 item_id = SYNC_AGENT_DA_STRDUP(result[index]);
2778 *list = g_list_append(*list, item_id);
2782 if (result != NULL) {
2783 __free_table(result);
2786 SYNC_AGENT_DA_MEMORY_FREE(new_table);
2791 int da_is_exist_item(SYNC_AGENT_DA_HANDLER * daci_handler, char *itemId)
2795 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
2796 retvm_if(itemId == NULL, 0, "item Id is NULL !!");
2800 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2802 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from item_tbl where item_id = \'%s\'", itemId);
2804 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2806 if (data_count == 0) {
2809 _DEBUG_ERROR("itemId [%s] already exist number of [%d]", itemId, data_count);
2817 sync_agent_da_return_e da_add_config(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
2821 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2822 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
2825 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2826 char *query = "insert into config_tbl (config_id, key, value, type, access_name) values (?, ?, ?, ?, ?)";
2829 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
2830 if (ret != SYNC_AGENT_DA_SUCCESS) {
2831 _DEBUG_ERROR("da_is_exist_config is failed");
2836 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
2838 stmt = __query_prepare(daci_handler, query, strlen(query));
2840 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2842 _stmt_bind_int(daci_handler, stmt, 1, config->config_id);
2843 __stmt_bind_text(daci_handler, stmt, 2, config->key);
2844 __stmt_bind_text(daci_handler, stmt, 3, config->value);
2845 __stmt_bind_text(daci_handler, stmt, 4, config->type);
2846 __stmt_bind_text(daci_handler, stmt, 5, config->access_name);
2848 ret = __stmt_write_step(daci_handler, stmt);
2849 __stmt_finalize(daci_handler, stmt);
2856 sync_agent_da_return_e da_add_config_list(SYNC_AGENT_DA_HANDLER * daci_handler, GList * config_list)
2860 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2861 retvm_if(config_list == NULL, SYNC_AGENT_DA_ERRORS, "config_list is NULL !!");
2864 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2867 sync_agent_da_config_s *config = NULL;
2869 char *query = "insert into config_tbl (config_id, key, value, type, access_name) values (?, ?, ?, ?, ?)";
2872 for (iter = config_list; iter != NULL; iter = g_list_next(iter)) {
2873 config = (sync_agent_da_config_s *) iter->data;
2874 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
2875 if (ret != SYNC_AGENT_DA_SUCCESS) {
2876 _DEBUG_ERROR("da_is_exist_config is failed");
2881 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
2884 stmt = __query_prepare(daci_handler, query, strlen(query));
2886 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2888 for (iter = config_list; iter != NULL; iter = g_list_next(iter)) {
2889 config = (sync_agent_da_config_s *) iter->data;
2891 _stmt_bind_int(daci_handler, stmt, 1, config->config_id);
2892 __stmt_bind_text(daci_handler, stmt, 2, config->key);
2893 __stmt_bind_text(daci_handler, stmt, 3, config->value);
2894 __stmt_bind_text(daci_handler, stmt, 4, config->type);
2895 __stmt_bind_text(daci_handler, stmt, 5, config->access_name);
2897 ret = __stmt_write_step(daci_handler, stmt);
2898 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
2899 __stmt_finalize(daci_handler, stmt);
2900 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2902 _stmt_reset(daci_handler, stmt);
2904 __stmt_finalize(daci_handler, stmt);
2911 sync_agent_da_return_e da_delete_config_by_key(SYNC_AGENT_DA_HANDLER * daci_handler, int configId, char *key)
2915 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2916 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
2918 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2920 char *query = "delete from config_tbl where config_id = ? and key = ?";
2922 stmt = __query_prepare(daci_handler, query, strlen(query));
2924 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
2926 _stmt_bind_int(daci_handler, stmt, 1, configId);
2927 __stmt_bind_text(daci_handler, stmt, 2, key);
2929 ret = __stmt_write_step(daci_handler, stmt);
2930 __stmt_finalize(daci_handler, stmt);
2937 sync_agent_da_return_e da_get_config_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, GList ** list)
2941 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2943 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
2945 sync_agent_da_config_s *config = 0;
2948 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
2949 GList *config_list = NULL;
2951 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from config_tbl where config_id = %d", account_id);
2953 data_Count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
2955 if (data_Count != 0) {
2956 /* query initialize */
2957 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
2959 snprintf(g_daci_query, sizeof(g_daci_query), "select * from config_tbl where config_id = %d", account_id);
2961 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
2963 for (i = 0; i < data_Count; i++) {
2964 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
2967 config = (sync_agent_da_config_s *) calloc(1, sizeof(sync_agent_da_config_s));
2968 if (config == NULL) {
2969 _DEBUG_ERROR("memory_allocation failed");
2970 ret = SYNC_AGENT_DA_ERR_MEMORY_FULL;
2974 config->config_id = __stmt_column_int(stmt, 0);
2975 config->key = _stmt_column_text(stmt, 1);
2976 config->value = _stmt_column_text(stmt, 2);
2977 config->type = _stmt_column_text(stmt, 3);
2978 config->access_name = _stmt_column_text(stmt, 5);
2980 config_list = g_list_append(config_list, config);
2982 __stmt_finalize(daci_handler, stmt);
2986 *list = config_list;
2993 sync_agent_da_return_e da_get_config_by_key(SYNC_AGENT_DA_HANDLER * daci_handler, int config_id, char *key, sync_agent_da_config_s ** config)
2997 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
2998 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
3000 int ret = SYNC_AGENT_DA_SUCCESS;
3002 char *query = "select key, value, type, access_name from config_tbl where config_id = ? and key =?";
3004 stmt = __query_prepare(daci_handler, query, strlen(query));
3006 return SYNC_AGENT_DA_ERRORS;
3009 _stmt_bind_int(daci_handler, stmt, 1, config_id);
3010 __stmt_bind_text(daci_handler, stmt, 2, key);
3012 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3013 (*config)->config_id = config_id;
3014 (*config)->key = _stmt_column_text(stmt, 0);
3015 (*config)->value = _stmt_column_text(stmt, 1);
3016 (*config)->type = _stmt_column_text(stmt, 2);
3017 (*config)->access_name = _stmt_column_text(stmt, 3);
3019 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3022 __stmt_finalize(daci_handler, stmt);
3029 sync_agent_da_return_e da_is_exist_config(SYNC_AGENT_DA_HANDLER * daci_handler, int config_id, char *key, int *exist)
3033 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3034 retvm_if(key == NULL, SYNC_AGENT_DA_ERRORS, "key is NULL !!");
3036 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3039 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3041 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from config_tbl where config_id = %d and key = \'%s\'", config_id, key);
3043 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3045 if (data_count == 0)
3055 sync_agent_da_return_e da_update_config(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
3059 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3060 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
3062 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3065 ret = da_is_exist_config(daci_handler, config->config_id, config->key, &exist);
3066 if (ret != SYNC_AGENT_DA_SUCCESS) {
3067 _DEBUG_ERROR("da_is_exist_config is failed");
3072 ret = da_set_config_value(daci_handler, config);
3074 ret = da_add_config(daci_handler, config);
3076 if (ret != SYNC_AGENT_DA_SUCCESS)
3077 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3084 sync_agent_da_return_e da_set_config_value(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_config_s * config)
3088 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3089 retvm_if(config == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_config_s is NULL !!");
3091 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3094 char *query = "update config_tbl set value = ?, type = ?, last_update = current_timestamp, access_name = ? " "where config_id = ? and key = ?";
3096 stmt = __query_prepare(daci_handler, query, strlen(query));
3098 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3100 __stmt_bind_text(daci_handler, stmt, 1, config->value);
3101 __stmt_bind_text(daci_handler, stmt, 2, config->type);
3102 __stmt_bind_text(daci_handler, stmt, 3, config->access_name);
3103 _stmt_bind_int(daci_handler, stmt, 4, config->config_id);
3104 __stmt_bind_text(daci_handler, stmt, 5, config->key);
3106 ret = _stmt_read_step(daci_handler, stmt);
3107 __stmt_finalize(daci_handler, stmt);
3114 sync_agent_da_return_e da_add_item_changelog(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog, int count)
3118 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3119 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3121 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3124 char *new_table = 0;
3125 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3127 for (i = 0; i < count; i++) {
3128 if (da_is_exist_item_changelog(daci_handler, account_id, itemChangelog[i].item_id) == 1)
3129 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3132 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3133 if (new_table == NULL)
3134 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3136 snprintf(g_daci_query, sizeof(g_daci_query), "insert into %s (item_id, operation_id, status, access_name) values (?, ?, ?, ?)", new_table);
3138 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3140 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3141 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3144 for (i = 0; i < count; i++) {
3145 __stmt_bind_text(daci_handler, stmt, 1, itemChangelog[i].item_id);
3146 _stmt_bind_int(daci_handler, stmt, 2, itemChangelog[i].operation_id);
3147 __stmt_bind_text(daci_handler, stmt, 3, ((itemChangelog[i].status == 0) ? "SYNC_REQUIRED" : itemChangelog[i].status));
3148 __stmt_bind_text(daci_handler, stmt, 4, itemChangelog[i].access_name);
3150 ret = __stmt_write_step(daci_handler, stmt);
3151 if ((ret != SYNC_AGENT_DA_ERR_MORE_DATA) && (ret != SYNC_AGENT_DA_SUCCESS)) {
3152 __stmt_finalize(daci_handler, stmt);
3153 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3154 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3156 _stmt_reset(daci_handler, stmt);
3159 ret = __stmt_finalize(daci_handler, stmt);
3162 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3169 sync_agent_da_return_e da_delete_item_changelog_by_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId)
3173 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3174 retvm_if(itemId == NULL, SYNC_AGENT_DA_ERRORS, "item Id is NULL !!");
3176 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3178 char *new_table = 0;
3179 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3181 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3182 if (new_table == NULL)
3183 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3185 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where item_id = ?", new_table);
3187 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3189 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3190 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3193 __stmt_bind_text(daci_handler, stmt, 1, itemId);
3195 ret = __stmt_write_step(daci_handler, stmt);
3196 __stmt_finalize(daci_handler, stmt);
3199 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3206 sync_agent_da_return_e da_delete_item_changelog_by_item_id_list(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char **itemIdList, int count)
3210 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3211 retvm_if(itemIdList == NULL, SYNC_AGENT_DA_ERRORS, "item Id List is NULL !!");
3214 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3215 char *new_table = 0;
3217 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3219 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3220 if (new_table == NULL)
3221 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3223 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where item_id = ?", new_table);
3225 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3227 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3228 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3231 for (i = 0; i < count; i++) {
3232 __stmt_bind_text(daci_handler, stmt, 1, itemIdList[i]);
3234 ret = __stmt_write_step(daci_handler, stmt);
3236 if (ret != SYNC_AGENT_DA_SUCCESS) {
3237 __stmt_finalize(daci_handler, stmt);
3238 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3239 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3241 _stmt_reset(daci_handler, stmt);
3243 __stmt_finalize(daci_handler, stmt);
3246 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3253 sync_agent_da_return_e da_delete_item_changelog_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
3257 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3259 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3261 char *new_table = 0;
3262 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3264 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3265 if (new_table == NULL) {
3266 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3270 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s " "where item_id in " "(select item_id " "from %s as changelog " "join item_tbl as item " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d)", new_table,
3271 new_table, account_id, itemTypeId);
3273 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3275 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3279 ret = __stmt_write_step(daci_handler, stmt);
3280 if (ret != SYNC_AGENT_DA_SUCCESS) {
3281 ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3288 __stmt_finalize(daci_handler, stmt);
3291 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3298 sync_agent_da_return_e da_set_item_changelog_operation_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog)
3302 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3303 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3305 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3307 char *new_table = 0;
3308 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3310 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3311 if (new_table == NULL)
3312 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3314 snprintf(g_daci_query, sizeof(g_daci_query), "update %s set operation_id = ?, status = ?, last_update = current_timestamp, access_name = ? where item_id = ?", new_table);
3316 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3318 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3319 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3322 _stmt_bind_int(daci_handler, stmt, 1, itemChangelog->operation_id);
3323 __stmt_bind_text(daci_handler, stmt, 2, itemChangelog->status);
3324 __stmt_bind_text(daci_handler, stmt, 3, itemChangelog->access_name);
3325 __stmt_bind_text(daci_handler, stmt, 4, itemChangelog->item_id);
3327 ret = __stmt_write_step(daci_handler, stmt);
3328 __stmt_finalize(daci_handler, stmt);
3331 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3338 sync_agent_da_return_e da_set_item_changelog_sync_status(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog)
3342 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3343 retvm_if(itemChangelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
3345 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3347 char *new_table = 0;
3348 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3350 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3351 if (new_table == NULL)
3352 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3354 snprintf(g_daci_query, sizeof(g_daci_query), "update %s set status = ?, last_update = current_timestamp, access_name = ? where item_id = ?", new_table);
3356 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3358 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3359 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3362 __stmt_bind_text(daci_handler, stmt, 1, itemChangelog->status);
3363 __stmt_bind_text(daci_handler, stmt, 2, itemChangelog->access_name);
3364 __stmt_bind_text(daci_handler, stmt, 3, itemChangelog->item_id);
3366 ret = __stmt_write_step(daci_handler, stmt);
3367 __stmt_finalize(daci_handler, stmt);
3370 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3377 sync_agent_da_return_e da_set_item_changelog_wait_status(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char **folderIdList, int folderIdCount, int *itemTypeIdList, int itemTypeIdCount)
3381 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3382 retvm_if(itemTypeIdList == NULL, SYNC_AGENT_DA_ERRORS, "item Type Id List is NULL !!");
3384 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3386 char *new_table = 0;
3390 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3392 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3393 if (new_table == NULL)
3394 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3396 snprintf(g_daci_query, sizeof(g_daci_query), "update %s " "set status = \'SYNC_WAIT\' " "where item_id in (select item_id " "from item_tbl as item " "join %s as changelog " "using(item_id) " "where item.account_id = %d and (", new_table, new_table,
3399 for (i = 0; i < folderIdCount; i++) {
3400 len = g_strlcat(g_daci_query, "item.folder_id = \'", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3401 len = g_strlcat(g_daci_query, folderIdList[i], SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3403 if (i < folderIdCount - 1) {
3404 len = g_strlcat(g_daci_query, "\' or ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3406 len = g_strlcat(g_daci_query, "\') and (", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3409 if (len >= SYNC_AGENT_DA_MAX_QUERY_LENGTH) {
3410 _DEBUG_ERROR("g_daci_query buffer overflow !!");
3411 /* todo : exception handling */
3415 for (i = 0; i < itemTypeIdCount; i++) {
3416 memset(temp_str, 0x00, sizeof(temp_str));
3417 snprintf(temp_str, sizeof(temp_str), "%d", itemTypeIdList[i]);
3419 len = g_strlcat(g_daci_query, "item.data_store_id = ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3420 len = g_strlcat(g_daci_query, temp_str, SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3422 if (i < itemTypeIdCount - 1) {
3423 len = g_strlcat(g_daci_query, " or ", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3425 len = g_strlcat(g_daci_query, ") )", SYNC_AGENT_DA_MAX_QUERY_LENGTH);
3428 if (len >= SYNC_AGENT_DA_MAX_QUERY_LENGTH) {
3429 _DEBUG_ERROR("g_daci_query buffer overflow !!");
3430 /* todo : exception handling */
3434 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3436 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3437 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3440 ret = __stmt_write_step(daci_handler, stmt);
3441 __stmt_finalize(daci_handler, stmt);
3444 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3451 sync_agent_da_return_e da_get_item_changelog_by_item_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, sync_agent_da_item_changelog_s * itemChangelog)
3455 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3457 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3459 char *new_table = 0;
3460 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3462 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3463 if (new_table == NULL)
3466 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where item_id = \'%s\'", new_table, itemChangelog->item_id);
3468 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3470 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3471 itemChangelog->operation_id = __stmt_column_int(stmt, 1);
3472 itemChangelog->status = _stmt_column_text(stmt, 2);
3473 itemChangelog->access_name = _stmt_column_text(stmt, 4);
3474 ret = SYNC_AGENT_DA_SUCCESS;
3475 } else if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_SUCCESS) {
3476 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3478 __stmt_finalize(daci_handler, stmt);
3482 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3484 _DEBUG_INFO("[%s] End !\n", __func__);
3491 sync_agent_da_return_e da_get_item_changelog_by_item_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *item_id, sync_agent_da_item_changelog_s ** sync_agent_changelog)
3495 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3496 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
3498 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERR_QUERY_FAILED;
3500 char *new_table = 0;
3501 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3503 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3504 if (new_table == NULL)
3507 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where item_id = \'%s\'", new_table, item_id);
3509 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3511 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
3512 (*sync_agent_changelog)->item_id = SYNC_AGENT_DA_STRDUP(item_id);
3513 (*sync_agent_changelog)->operation_id = __stmt_column_int(stmt, 1);
3514 (*sync_agent_changelog)->status = _stmt_column_text(stmt, 2);
3515 (*sync_agent_changelog)->access_name = _stmt_column_text(stmt, 4);
3516 ret = SYNC_AGENT_DA_SUCCESS;
3517 } else if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_SUCCESS) {
3518 ret = SYNC_AGENT_DA_ERR_NO_DATA;
3520 __stmt_finalize(daci_handler, stmt);
3524 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3531 sync_agent_da_return_e da_get_item_changelog_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
3535 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3537 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
3538 sync_agent_da_item_changelog_s *item_changelog;
3539 char *new_table = 0;
3545 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3547 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3548 if (new_table == NULL)
3550 // snprintf(g_daci_query, sizeof(g_daci_query), "select item.item_id, item.data_store_id, item.service_id, changelog.operation_id, changelog.status " "from item_tbl as item " "join %s as changelog " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d", new_table, account_id, itemTypeId);
3551 snprintf(g_daci_query, sizeof(g_daci_query),
3552 "select changelog.item_id, changelog.operation_id, changelog.status, changelog.access_name from %s as changelog " "join item_tbl as item " "using (item_id) " "where item.account_id = %d and item.data_store_id = %d", new_table, account_id,
3555 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3556 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3557 for (i = 0; i < row_count; i++) {
3558 item_changelog = NULL;
3559 ret = sync_agent_create_changelog(&item_changelog);
3560 if (ret != SYNC_AGENT_DA_SUCCESS) {
3561 _DEBUG_ERROR("sync_agent_create_changelog() failed !!");
3565 item_changelog->item_id = SYNC_AGENT_DA_STRDUP(result[index]);
3567 item_changelog->operation_id = SYNC_AGENT_DA_ATOI(result[index]);
3569 item_changelog->status = SYNC_AGENT_DA_STRDUP(result[index]);
3571 item_changelog->access_name = SYNC_AGENT_DA_STRDUP(result[index]);
3574 *list = g_list_append(*list, item_changelog);
3581 __free_table(result);
3584 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3591 sync_agent_da_item_changelog_s *get_itemChangelogByOperationId(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int operationId, int *count)
3595 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3598 sync_agent_da_item_changelog_s *item_changelog = 0;
3599 char *new_table = 0;
3602 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3604 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3605 if (new_table == NULL)
3606 return item_changelog;
3608 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from %s where operation_id = %d", new_table, operationId);
3610 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3611 *count = data_count;
3613 if (data_count != 0) {
3614 /* query initialize */
3615 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
3617 item_changelog = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_item_changelog_s *, sizeof(sync_agent_da_item_changelog_s), data_count);
3618 if (item_changelog == NULL) {
3619 _DEBUG_ERROR("memory_allocation failed");
3622 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3624 return item_changelog;
3627 snprintf(g_daci_query, sizeof(g_daci_query), "select * from %s where operation_id = %d", new_table, operationId);
3629 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
3631 for (i = 0; i < data_count; i++) {
3632 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
3635 item_changelog[i].item_id = _stmt_column_text(stmt, 0);
3636 item_changelog[i].operation_id = __stmt_column_int(stmt, 1);
3637 item_changelog[i].status = _stmt_column_text(stmt, 2);
3638 item_changelog[i].access_name = _stmt_column_text(stmt, 4);
3640 __stmt_finalize(daci_handler, stmt);
3645 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3649 return item_changelog;
3652 int da_is_exist_item_changelog(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *itemId)
3656 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
3657 retvm_if(itemId == NULL, 0, "item Id is NULL !!");
3660 char *new_table = 0;
3662 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3664 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
3665 if (new_table == NULL)
3668 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from %s where item_id = \'%s\'", new_table, itemId);
3670 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3672 if (data_count == 0)
3676 SYNC_AGENT_DA_MEMORY_FREE(new_table);
3683 sync_agent_da_return_e da_add_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_last_anchor_s * last_anchor)
3687 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3688 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
3690 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3694 if (da_is_exist_last_anchor(daci_handler, last_anchor->account_id, last_anchor->data_store_id) == 1)
3695 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3697 query = "insert into last_anchor_tbl (account_id, data_store_id, last_anchor_server, last_anchor_client, access_name) values (?, ?, ?, ?, ?)";
3699 stmt = __query_prepare(daci_handler, query, strlen(query));
3701 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3703 _stmt_bind_int(daci_handler, stmt, 1, last_anchor->account_id);
3704 _stmt_bind_int(daci_handler, stmt, 2, last_anchor->data_store_id);
3705 __stmt_bind_text(daci_handler, stmt, 3, last_anchor->last_anchor_server);
3706 __stmt_bind_text(daci_handler, stmt, 4, last_anchor->last_anchor_client);
3707 __stmt_bind_text(daci_handler, stmt, 5, last_anchor->access_name);
3709 ret = __stmt_write_step(daci_handler, stmt);
3710 __stmt_finalize(daci_handler, stmt);
3717 sync_agent_da_return_e da_delete_last_anchor_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
3721 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3723 sync_agent_da_return_e ret = _delete_account(daci_handler, SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR, account_id);
3724 if (ret != SYNC_AGENT_DA_SUCCESS)
3725 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3732 sync_agent_da_return_e da_delete_last_anchor_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
3736 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3738 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3740 char *query = "delete from last_anchor_tbl where account_id = ? and data_store_id = ?";
3742 stmt = __query_prepare(daci_handler, query, strlen(query));
3744 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3746 _stmt_bind_int(daci_handler, stmt, 1, account_id);
3747 _stmt_bind_int(daci_handler, stmt, 2, itemTypeId);
3749 ret = __stmt_write_step(daci_handler, stmt);
3750 __stmt_finalize(daci_handler, stmt);
3757 sync_agent_da_return_e da_set_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_last_anchor_s * last_anchor)
3761 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3762 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
3764 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3766 char *query = "update last_anchor_tbl set last_anchor_server = ?, last_anchor_client = ?, last_update = current_timestamp, access_name = ?" "where account_id = ? and data_store_id = ?";
3768 stmt = __query_prepare(daci_handler, query, strlen(query));
3770 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3772 __stmt_bind_text(daci_handler, stmt, 1, last_anchor->last_anchor_server);
3773 __stmt_bind_text(daci_handler, stmt, 2, last_anchor->last_anchor_client);
3774 __stmt_bind_text(daci_handler, stmt, 3, last_anchor->access_name);
3775 _stmt_bind_int(daci_handler, stmt, 4, last_anchor->account_id);
3776 _stmt_bind_int(daci_handler, stmt, 5, last_anchor->data_store_id);
3778 ret = __stmt_write_step(daci_handler, stmt);
3779 __stmt_finalize(daci_handler, stmt);
3786 sync_agent_da_last_anchor_s *da_get_last_anchor_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int *count)
3790 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3792 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3793 sync_agent_da_last_anchor_s *last_anchor = 0;
3799 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3801 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, data_store_id, last_anchor_server, last_anchor_client from last_anchor_tbl where account_id = %d", account_id);
3803 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3806 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3807 last_anchor = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_last_anchor_s *, sizeof(sync_agent_da_last_anchor_s), row_count);
3808 if (last_anchor == NULL) {
3809 _DEBUG_ERROR("memory_allocation failed");
3813 for (i = 0; i < row_count; i++) {
3814 last_anchor[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
3816 last_anchor[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
3818 last_anchor[i].last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
3820 last_anchor[i].last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
3822 last_anchor[i].access_name = 0;
3829 __free_table(result);
3836 sync_agent_da_last_anchor_s *da_get_last_anchor_by_item_type_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId, int *count)
3840 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
3842 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3843 sync_agent_da_last_anchor_s *last_anchor = 0;
3849 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3851 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, data_store_id, last_anchor_server, last_anchor_client from last_anchor_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
3853 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3856 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3857 last_anchor = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_last_anchor_s *, sizeof(sync_agent_da_last_anchor_s), row_count);
3858 if (last_anchor == NULL) {
3859 _DEBUG_ERROR("memory_allocation failed");
3863 for (i = 0; i < row_count; i++) {
3864 last_anchor[i].account_id = SYNC_AGENT_DA_ATOI(result[index]);
3866 last_anchor[i].data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
3868 last_anchor[i].last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
3870 last_anchor[i].last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
3872 last_anchor[i].access_name = 0;
3879 __free_table(result);
3886 sync_agent_da_return_e da_get_last_anchor_by_item_type_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int item_type_id, GList ** list)
3890 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3892 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
3893 sync_agent_da_last_anchor_s *last_anchor = NULL;
3899 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3901 snprintf(g_daci_query, sizeof(g_daci_query), "select account_id, data_store_id, last_anchor_server, last_anchor_client from last_anchor_tbl where account_id = %d and data_store_id = %d", account_id, item_type_id);
3903 ret = _get_table(daci_handler, g_daci_query, &result, &row_count, &col_count);
3904 // *count = row_count;
3906 if ((ret == SYNC_AGENT_DA_SUCCESS) && (row_count != 0) && (result != 0)) {
3907 for (i = 0; i < row_count; i++) {
3909 ret = sync_agent_create_last_anchor(&last_anchor);
3910 if (ret != SYNC_AGENT_DA_SUCCESS) {
3911 _DEBUG_ERROR("sync_agent_create_last_anchor() failed !!");
3915 last_anchor->account_id = SYNC_AGENT_DA_ATOI(result[index]);
3917 last_anchor->data_store_id = SYNC_AGENT_DA_ATOI(result[index]);
3919 last_anchor->last_anchor_server = SYNC_AGENT_DA_STRDUP(result[index]);
3921 last_anchor->last_anchor_client = SYNC_AGENT_DA_STRDUP(result[index]);
3923 last_anchor->access_name = NULL;
3925 *list = g_list_append(*list, last_anchor);
3927 } else if (ret != SYNC_AGENT_DA_SUCCESS) {
3928 _DEBUG_ERROR("__get_table() failed !!");
3935 __free_table(result);
3942 int da_is_exist_last_anchor(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int itemTypeId)
3946 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
3950 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
3952 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from last_anchor_tbl where account_id = %d and data_store_id = %d", account_id, itemTypeId);
3954 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
3956 if (data_count == 0)
3964 sync_agent_da_return_e da_add_mapping(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_mapping_s * mapping)
3968 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
3969 retvm_if(mapping == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_mapping_s is NULL !!");
3971 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
3975 if (da_is_exist_mapping_by_luid(daci_handler, mapping->account_id, mapping->luid) == 1) {
3976 _DEBUG_INFO("exist mapping item");
3977 return SYNC_AGENT_DA_ERR_PRIMARY_KEY_NOT_UNIQUE;
3980 query = "insert into mapping_tbl (account_id, data_store_id, luid, guid, access_name) values (?, ?, ?, ?, ?)";
3982 stmt = __query_prepare(daci_handler, query, strlen(query));
3984 _DEBUG_ERROR("stmt is NULL !!");
3985 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
3988 _DEBUG_INFO("account_id = %d", mapping->account_id);
3989 _DEBUG_INFO("data_store_id = %d", mapping->data_store_id);
3990 _DEBUG_INFO("luid = %s", mapping->luid);
3991 _DEBUG_INFO("guid = %s", mapping->guid);
3992 _DEBUG_INFO("access_name = %s", mapping->access_name);
3994 _stmt_bind_int(daci_handler, stmt, 1, mapping->account_id);
3995 _stmt_bind_int(daci_handler, stmt, 2, mapping->data_store_id);
3996 __stmt_bind_text(daci_handler, stmt, 3, mapping->luid);
3997 __stmt_bind_text(daci_handler, stmt, 4, mapping->guid);
3998 __stmt_bind_text(daci_handler, stmt, 5, mapping->access_name);
4000 _DEBUG_INFO("query = %s", query);
4002 ret = __stmt_write_step(daci_handler, stmt);
4003 __stmt_finalize(daci_handler, stmt);
4010 sync_agent_da_return_e da_delete_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4014 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4016 sync_agent_da_return_e ret = _delete_account(daci_handler, SYNC_AGENT_DA_TABLE_NAME_MAPPING, account_id);
4017 if (ret != SYNC_AGENT_DA_SUCCESS)
4018 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4025 sync_agent_da_return_e da_delete_mapping_by_luid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4029 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4030 retvm_if(luid == NULL, SYNC_AGENT_DA_ERRORS, "luid is NULL !!");
4032 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4034 char *query = "delete from mapping_tbl where account_id = ? and luid = ?";
4036 stmt = __query_prepare(daci_handler, query, strlen(query));
4038 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4040 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4041 __stmt_bind_text(daci_handler, stmt, 2, luid);
4043 ret = __stmt_write_step(daci_handler, stmt);
4044 __stmt_finalize(daci_handler, stmt);
4051 sync_agent_da_mapping_s *da_get_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, int *count)
4055 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4058 sync_agent_da_mapping_s *mapping = 0;
4061 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4063 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4065 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4066 *count = data_count;
4068 if (data_count != 0) {
4069 /* query initialize */
4070 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
4072 mapping = SYNC_AGENT_DA_MEMORY_MALLOC(sync_agent_da_mapping_s *, sizeof(sync_agent_da_mapping_s), data_count);
4073 if (mapping == NULL) {
4074 _DEBUG_ERROR("memory_allocation failed");
4078 snprintf(g_daci_query, sizeof(g_daci_query), "select * from mapping_tbl where account_id = %d", account_id);
4080 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
4082 for (i = 0; i < data_count; i++) {
4083 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
4086 mapping[i].account_id = __stmt_column_int(stmt, 0);
4087 mapping[i].data_store_id = __stmt_column_int(stmt, 1);
4088 mapping[i].luid = _stmt_column_text(stmt, 2);
4089 mapping[i].guid = _stmt_column_text(stmt, 3);
4090 mapping[i].access_name = _stmt_column_text(stmt, 5);
4092 __stmt_finalize(daci_handler, stmt);
4101 sync_agent_da_return_e da_get_mapping_by_account_id_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, GList ** list)
4105 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4107 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4109 sync_agent_da_mapping_s *mapping;
4112 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4114 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4116 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4118 if (data_count != 0) {
4119 /* query initialize */
4120 SYNC_AGENT_DA_MEMORY_SET(g_daci_query);
4122 snprintf(g_daci_query, sizeof(g_daci_query), "select * from mapping_tbl where account_id = %d", account_id);
4124 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
4126 for (i = 0; i < data_count; i++) {
4127 if (_stmt_read_step(daci_handler, stmt) != SYNC_AGENT_DA_ERR_MORE_DATA)
4131 ret = sync_agent_create_mapping(&mapping);
4132 if (ret != SYNC_AGENT_DA_SUCCESS) {
4133 _DEBUG_ERROR("sync_agent_create_mapping() failed !!");
4137 mapping->account_id = __stmt_column_int(stmt, 0);
4138 mapping->data_store_id = __stmt_column_int(stmt, 1);
4139 mapping->luid = _stmt_column_text(stmt, 2);
4140 mapping->guid = _stmt_column_text(stmt, 3);
4141 mapping->access_name = _stmt_column_text(stmt, 5);
4143 *list = g_list_append(*list, mapping);
4145 __stmt_finalize(daci_handler, stmt);
4147 _DEBUG_ERROR("stmt is NULL !!");
4150 _DEBUG_INFO("no data !!");
4151 ret = SYNC_AGENT_DA_SUCCESS;
4159 char *da_get_mapping_guid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4163 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4164 retvm_if(luid == NULL, NULL, "luid is NULL !!");
4167 char *query = "select guid from mapping_tbl where account_id = ? and luid = ?";
4170 stmt = __query_prepare(daci_handler, query, strlen(query));
4172 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4173 __stmt_bind_text(daci_handler, stmt, 2, luid);
4175 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
4176 guid = _stmt_column_text(stmt, 0);
4178 __stmt_finalize(daci_handler, stmt);
4186 sync_agent_da_return_e da_get_mapping_guid_new(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid, sync_agent_da_mapping_s ** sync_agent_mapping)
4190 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4191 retvm_if(luid == NULL, SYNC_AGENT_DA_ERRORS, "luid is NULL !!");
4193 sync_agent_da_return_e ret = SYNC_AGENT_DA_ERRORS;
4195 char *query = "select * from mapping_tbl where account_id = ? and luid = ?";
4197 stmt = __query_prepare(daci_handler, query, strlen(query));
4199 _stmt_bind_int(daci_handler, stmt, 1, account_id);
4200 __stmt_bind_text(daci_handler, stmt, 2, luid);
4202 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4203 (*sync_agent_mapping)->account_id = __stmt_column_int(stmt, 0);
4204 (*sync_agent_mapping)->data_store_id = __stmt_column_int(stmt, 1);
4205 (*sync_agent_mapping)->luid = _stmt_column_text(stmt, 2);
4206 (*sync_agent_mapping)->guid = _stmt_column_text(stmt, 3);
4207 (*sync_agent_mapping)->access_name = _stmt_column_text(stmt, 5);
4208 ret = SYNC_AGENT_DA_SUCCESS;
4211 __stmt_finalize(daci_handler, stmt);
4213 _DEBUG_ERROR("stmt is NULL !!");
4221 int da_is_exist_mapping_by_account_id(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4225 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4229 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4231 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d", account_id);
4233 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4235 if (data_count == 0)
4243 int da_is_exist_mapping_by_luid(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id, char *luid)
4247 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
4248 retvm_if(luid == NULL, 0, "luid is NULL !!");
4252 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4254 snprintf(g_daci_query, sizeof(g_daci_query), "select count(*) from mapping_tbl where account_id = %d and luid = \'%s\'", account_id, luid);
4256 data_count = _get_data_count(daci_handler, g_daci_query, strlen(g_daci_query));
4258 if (data_count == 0)
4261 _DEBUG_INFO("ret : %d", ret);
4268 sync_agent_da_return_e da_add_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_provider_s * id_provider)
4272 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4273 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
4276 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4279 query = "insert into id_provider_tbl (id_provider_code, id_capacity, bit_per_page, last_id, free_bit_cnt) values (?, ?, ?, ?, ?)";
4281 stmt = __query_prepare(daci_handler, query, strlen(query));
4283 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4286 _stmt_bind_int(daci_handler, stmt, 1, id_provider->id_provider_code);
4287 _stmt_bind_int(daci_handler, stmt, 2, id_provider->id_capacity);
4288 _stmt_bind_int(daci_handler, stmt, 3, id_provider->bit_per_page);
4289 _stmt_bind_int(daci_handler, stmt, 4, id_provider->last_id);
4290 _stmt_bind_int(daci_handler, stmt, 5, id_provider->free_bit_cnt);
4292 ret = __stmt_write_step(daci_handler, stmt);
4293 if (ret != SYNC_AGENT_DA_SUCCESS) {
4294 __stmt_finalize(daci_handler, stmt);
4295 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4298 __stmt_finalize(daci_handler, stmt);
4305 sync_agent_da_return_e da_get_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, sync_agent_da_id_provider_s ** id_provider)
4309 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4311 int ret = SYNC_AGENT_DA_SUCCESS;
4313 char *query = "select id_capacity, bit_per_page, last_id, free_bit_cnt from id_provider_tbl where id_provider_code = ?";
4315 stmt = __query_prepare(daci_handler, query, strlen(query));
4317 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4319 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4320 *id_provider = (sync_agent_da_id_provider_s *) calloc(1, sizeof(sync_agent_da_id_provider_s));
4321 if (*id_provider == NULL) {
4322 _DEBUG_ERROR("CALLOC failed !!!");
4323 return SYNC_AGENT_DA_ERRORS;
4325 (*id_provider)->id_capacity = __stmt_column_int(stmt, 0);
4326 (*id_provider)->bit_per_page = __stmt_column_int(stmt, 1);
4327 (*id_provider)->last_id = __stmt_column_int(stmt, 2);
4328 (*id_provider)->free_bit_cnt = __stmt_column_int(stmt, 3);
4330 ret = SYNC_AGENT_DA_ERR_NO_DATA;
4332 __stmt_finalize(daci_handler, stmt);
4340 sync_agent_da_return_e da_update_id_provider(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_provider_s * id_provider)
4344 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4345 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
4347 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4349 char *query = "update id_provider_tbl set last_id = ?, free_bit_cnt = ? where id_provider_code = ?";
4351 stmt = __query_prepare(daci_handler, query, strlen(query));
4353 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4355 _stmt_bind_int(daci_handler, stmt, 1, id_provider->last_id);
4356 _stmt_bind_int(daci_handler, stmt, 2, id_provider->free_bit_cnt);
4357 _stmt_bind_int(daci_handler, stmt, 3, id_provider->id_provider_code);
4359 ret = __stmt_write_step(daci_handler, stmt);
4360 __stmt_finalize(daci_handler, stmt);
4367 sync_agent_da_return_e da_add_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_page_s * id_page, unsigned int page_byte_size)
4371 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4372 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
4375 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4378 query = "insert into id_page_tbl (page_index, id_provider_code, page_bit) values (?, ?, ?)";
4380 stmt = __query_prepare(daci_handler, query, strlen(query));
4382 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4385 _stmt_bind_int(daci_handler, stmt, 1, id_page->page_index);
4386 _stmt_bind_int(daci_handler, stmt, 2, id_page->id_provider_code);
4387 _stmt_bind_blob(daci_handler, stmt, 3, id_page->page_bit, page_byte_size);
4389 for (; i < page_byte_size; i++) {
4390 _DEBUG_INFO("[%d] %d\n", i, (id_page->page_bit)[i]);
4393 ret = __stmt_write_step(daci_handler, stmt);
4394 if (ret != SYNC_AGENT_DA_SUCCESS) {
4395 __stmt_finalize(daci_handler, stmt);
4396 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4399 __stmt_finalize(daci_handler, stmt);
4406 sync_agent_da_return_e da_delete_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, unsigned int page_index)
4410 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4412 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4414 char *query = "delete from id_page_tbl where id_provider_code = ? and page_index = ?";
4416 stmt = __query_prepare(daci_handler, query, strlen(query));
4418 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4420 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4421 _stmt_bind_int(daci_handler, stmt, 2, page_index);
4423 ret = __stmt_write_step(daci_handler, stmt);
4424 __stmt_finalize(daci_handler, stmt);
4431 sync_agent_da_return_e da_get_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, unsigned int page_index, char **page_bit)
4435 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4437 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4439 char *query = "select page_bit from id_page_tbl where id_provider_code = ? and page_index = ?";
4441 stmt = __query_prepare(daci_handler, query, strlen(query));
4443 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4444 _stmt_bind_int(daci_handler, stmt, 2, page_index);
4446 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4447 int byte_len = sqlite3_column_bytes(stmt, 0);
4448 byte_len += 1; /* The count which sqlite3_column_bytes returns doesn't include trailing \0 in case of string. */
4449 *page_bit = (char *)calloc(byte_len, sizeof(char));
4450 if (*page_bit == NULL) {
4451 _DEBUG_ERROR("CALLOC failed !!!");
4452 return SYNC_AGENT_DA_ERRORS;
4455 const unsigned char *geted_page_bit = sqlite3_column_text(stmt, 0);
4457 memcpy(*page_bit, geted_page_bit, byte_len);
4459 _DEBUG_INFO("NO DATA");
4462 __stmt_finalize(daci_handler, stmt);
4470 sync_agent_da_return_e da_get_id_page_index(SYNC_AGENT_DA_HANDLER * daci_handler, unsigned int id_provider_code, int *count)
4474 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4476 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4478 char *query = "select count(*) from id_page_tbl where id_provider_code = ?;";
4480 stmt = __query_prepare(daci_handler, query, strlen(query));
4482 _stmt_bind_int(daci_handler, stmt, 1, id_provider_code);
4484 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA) {
4485 *count = __stmt_column_int(stmt, 0);
4487 _DEBUG_INFO("NO DATA");
4490 __stmt_finalize(daci_handler, stmt);
4498 sync_agent_da_return_e da_update_id_page(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_id_page_s * id_page, unsigned int page_byte_size)
4502 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4503 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
4505 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4507 char *query = "update id_page_tbl set page_bit = ? where id_provider_code = ? and page_index = ?";
4509 stmt = __query_prepare(daci_handler, query, strlen(query));
4511 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4513 _stmt_bind_blob(daci_handler, stmt, 1, id_page->page_bit, page_byte_size);
4514 _stmt_bind_int(daci_handler, stmt, 2, id_page->id_provider_code);
4515 _stmt_bind_int(daci_handler, stmt, 3, id_page->page_index);
4517 ret = __stmt_write_step(daci_handler, stmt);
4518 __stmt_finalize(daci_handler, stmt);
4525 sync_agent_da_return_e da_get_item_count_by_datastore_id(SYNC_AGENT_DA_HANDLER *daci_handler, int data_store_id, int fw_account_id, int *item_count)
4529 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4531 char query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
4532 char *new_table = 0;
4535 _DEBUG_INFO("data_store_id = %d", data_store_id);
4537 new_table = __replace_table_name("account_%d_item_changelog_tbl", fw_account_id, 1);
4538 if (new_table == NULL) {
4539 _DEBUG_ERROR("__replace_table_name is failed");
4541 return SYNC_AGENT_DA_ERRORS;
4544 snprintf(query, sizeof(query), "select count(distinct item_tbl.item_id) from item_tbl where item_tbl.account_id = %d and item_tbl.data_store_id = %d and"
4545 " item_tbl.item_id not in (select distinct item.item_id from item_tbl as item join %s as changelog where changelog.item_id = item.item_id and item.data_store_id = %d and changelog.operation_id = 303)", fw_account_id, data_store_id, new_table, data_store_id);
4546 _DEBUG_INFO("query = %s", query);
4547 data_count = _get_data_count(daci_handler, query, strlen(query));
4549 *item_count = data_count;
4551 if (new_table != NULL)
4556 return SYNC_AGENT_DA_SUCCESS;
4560 int _busy_handler(void *pData, int count)
4564 _DEBUG_TRACE("__busy_handler %d called", count);
4566 /* sleep time when SQLITE_LOCK */
4571 /* retry will be stopped if busy handler return 0 */
4572 return SYNC_AGENT_DA_RETRY_COUNT - count;
4575 sync_agent_da_return_e __query_exec(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char *err_msg)
4579 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_NOT_OPENED, "SYNC_AGENT_DA_HANDLER is NULL !!");
4580 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "query is NULL !!");
4582 char *query_msg = 0;
4585 int err_mutex = pthread_mutex_lock(&exec_lock);
4587 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4589 ret = sqlite3_exec(daci_handler, query, 0, 0, &query_msg);
4590 err_mutex = pthread_mutex_unlock(&exec_lock);
4592 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4595 if (ret != SQLITE_OK) {
4596 _DEBUG_ERROR("%s(%d) : %s", err_msg, ret, query_msg);
4598 if (NULL != query_msg)
4599 sqlite3_free(query_msg);
4601 if (ret == SQLITE_BUSY)
4602 return SYNC_AGENT_DA_ERR_LOCKED;
4604 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4609 return SYNC_AGENT_DA_SUCCESS;
4612 daci_stmt __query_prepare(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size)
4616 retvm_if(daci_handler == NULL, NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
4617 retvm_if(query == NULL, NULL, "query is NULL !!");
4622 int err_mutex = pthread_mutex_lock(&exec_lock);
4624 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4626 ret = sqlite3_prepare_v2(daci_handler, query, size, &stmt, 0);
4627 err_mutex = pthread_mutex_unlock(&exec_lock);
4629 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4632 if (ret != SQLITE_OK)
4633 _DEBUG_ERROR("sqlite3_query_prepare failed(%d) : %s ", ret, sqlite3_errmsg(daci_handler));
4640 sync_agent_da_return_e __stmt_bind_text(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const char *value)
4644 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4648 if (value != NULL) {
4649 ret = sqlite3_bind_text(stmt, index, value, strlen(value), SQLITE_STATIC);
4651 ret = __stmt_bind_null(daci_handler, stmt, index);
4653 if (ret == SYNC_AGENT_DA_SUCCESS)
4657 if (ret != SQLITE_OK) {
4658 _DEBUG_ERROR("sqlite3_stmt_bind_text failed(%d) : %s ", ret, sqlite3_errmsg(daci_handler));
4659 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4664 return SYNC_AGENT_DA_SUCCESS;
4667 sync_agent_da_return_e _stmt_bind_int(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const int value)
4671 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4675 ret = sqlite3_bind_int(stmt, index, value);
4676 if (ret != SQLITE_OK) {
4677 _DEBUG_ERROR("sqlite3_stmt_bind_int failed(%d) : %s \n", ret, sqlite3_errmsg(daci_handler));
4678 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4683 return SYNC_AGENT_DA_SUCCESS;
4686 static sync_agent_da_return_e _stmt_bind_blob(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index, const void *value, int nbyte)
4690 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4694 ret = sqlite3_bind_blob(stmt, index, value, nbyte, 0);
4695 if (ret != SQLITE_OK) {
4696 _DEBUG_ERROR("sqlite3_bind_blob failed(%d) : %s \n", ret, sqlite3_errmsg(daci_handler));
4697 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4702 return SYNC_AGENT_DA_SUCCESS;
4705 sync_agent_da_return_e __stmt_bind_null(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt, int index)
4709 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4713 ret = sqlite3_bind_null(stmt, index);
4714 if (ret != SQLITE_OK) {
4715 _DEBUG_ERROR("sqlite3_stmt_bind_null failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4716 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4721 return SYNC_AGENT_DA_SUCCESS;
4724 sync_agent_da_return_e _stmt_read_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4728 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4731 // int err_mutex = 0;
4733 // err_mutex = pthread_mutex_lock(&exec_lock);
4735 // _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4738 ret = sqlite3_step(stmt);
4740 // err_mutex = pthread_mutex_unlock(&exec_lock);
4742 // _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4745 if (ret == SQLITE_ROW)
4746 return SYNC_AGENT_DA_ERR_MORE_DATA;
4748 if (ret != SQLITE_DONE) {
4749 _DEBUG_ERROR("sqlite3_stmt_step failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4751 if (ret == SQLITE_BUSY)
4752 return SYNC_AGENT_DA_ERR_LOCKED;
4754 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4759 return SYNC_AGENT_DA_SUCCESS;
4762 static sync_agent_da_return_e __stmt_write_step(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4766 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4768 int transaction_flag = 0;
4771 if (use_transaction_thread_id != 0) {
4772 if (use_transaction_thread_id != SYNC_AGENT_DA_GET_THREAD_ID) {
4773 err_mutex = pthread_mutex_lock(&transaction_lock);
4775 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4777 use_transaction_thread_id = SYNC_AGENT_DA_GET_THREAD_ID;
4778 transaction_flag = 1;
4782 err_mutex = pthread_mutex_lock(&exec_lock);
4784 _DEBUG_ERROR("Failed pthread_mutex_lock : %d", err_mutex);
4787 int ret = sqlite3_step(stmt);
4789 err_mutex = pthread_mutex_unlock(&exec_lock);
4791 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4794 if (transaction_flag) {
4795 use_transaction_thread_id = 0;
4796 err_mutex = pthread_mutex_unlock(&transaction_lock);
4798 _DEBUG_ERROR("Failed pthread_mutex_unlock : %d", err_mutex);
4802 if (ret == SQLITE_ROW) {
4803 return SYNC_AGENT_DA_ERR_MORE_DATA;
4806 if (ret != SQLITE_DONE) {
4807 _DEBUG_ERROR("sqlite3_stmt_step failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4808 if (ret == SQLITE_BUSY) {
4809 _DEBUG_ERROR("Never reached this line!!");
4810 return SYNC_AGENT_DA_ERR_LOCKED;
4812 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4817 return SYNC_AGENT_DA_SUCCESS;
4820 sync_agent_da_return_e _stmt_reset(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4824 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4828 if (sqlite3_reset(stmt) != SQLITE_OK) {
4829 _DEBUG_ERROR("sqlite3_stmt_reset failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4830 return SYNC_AGENT_DA_ERRORS;
4835 return SYNC_AGENT_DA_SUCCESS;
4838 sync_agent_da_return_e __stmt_finalize(SYNC_AGENT_DA_HANDLER * daci_handler, daci_stmt stmt)
4842 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4846 if (sqlite3_finalize(stmt) != SQLITE_OK) {
4847 _DEBUG_ERROR("sqlite3_stmt_finalize failed(%d) : %s", ret, sqlite3_errmsg(daci_handler));
4848 return SYNC_AGENT_DA_ERRORS;
4853 return SYNC_AGENT_DA_SUCCESS;
4856 char *_stmt_column_text(daci_stmt stmt, int index)
4862 temp = (char *)sqlite3_column_text(stmt, index);
4866 return SYNC_AGENT_DA_STRDUP(temp);
4869 int __stmt_column_int(daci_stmt stmt, int index)
4875 return (int)sqlite3_column_int(stmt, index);
4878 sync_agent_da_return_e _get_table(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, char ***result, int *row_count, int *col_count)
4882 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERR_NOT_OPENED, "SYNC_AGENT_DA_HANDLER is NULL !!");
4883 retvm_if(query == NULL, SYNC_AGENT_DA_ERRORS, "query is NULL !!");
4888 int err_mutex = pthread_mutex_lock(&exec_lock);
4890 _DEBUG_TRACE("Failed pthread_mutex_lock : %d", err_mutex);
4892 ret = sqlite3_get_table(daci_handler, query, result, row_count, col_count, &err_msg);
4893 err_mutex = pthread_mutex_unlock(&exec_lock);
4895 _DEBUG_TRACE("Failed pthread_mutex_lock : %d", err_mutex);
4898 if (ret != SQLITE_OK) {
4899 _DEBUG_ERROR("sqlite3_get_table failed(%d) : %s", ret, err_msg);
4901 __free_table(*result);
4902 if (NULL != err_msg)
4903 sqlite3_free(err_msg);
4904 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
4909 return SYNC_AGENT_DA_SUCCESS;
4912 void __free_table(char **result)
4917 sqlite3_free_table(result);
4922 sync_agent_da_return_e _create_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4926 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4928 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4929 char *new_table = 0;
4930 char *new_table_create = 0;
4932 ret = da_begin_transaction(daci_handler);
4933 if (ret != SYNC_AGENT_DA_SUCCESS) {
4934 _DEBUG_ERROR("agent_db_changelog_tbl_create failed");
4935 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
4938 /* 9. create account_item_changelog_tbl */
4939 new_table = __replace_table_name("account_%d_item_changelog_tbl", account_id, 1);
4940 if (new_table == NULL) {
4941 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
4942 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
4945 if (__exist_table(daci_handler, new_table) == 0) {
4946 new_table_create = __replace_table_name(g_daci_create_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 4);
4948 ret = __query_exec(daci_handler, new_table_create, "Item_changelog_tbl_create failed");
4950 if (ret != SYNC_AGENT_DA_SUCCESS) {
4951 da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);
4952 return SYNC_AGENT_DA_ERR_CREATE_TABLE_FAILED;
4957 SYNC_AGENT_DA_MEMORY_FREE(new_table);
4958 SYNC_AGENT_DA_MEMORY_FREE(new_table_create);
4962 return da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_COMMIT);
4965 sync_agent_da_return_e _drop_changelog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4969 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4971 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4972 char *new_table_drop = 0;
4974 /* 9. drop account_item_changelog_tbl */
4975 new_table_drop = __replace_table_name(g_daci_drop_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 1);
4977 ret = __query_exec(daci_handler, new_table_drop, "Item_changelog_tbl_drop failed");
4978 if (ret != SYNC_AGENT_DA_SUCCESS) {
4979 /* da_end_transaction(daci_handler, SYNC_AGENT_DA_TRANSACTION_ROLLBACK);*/
4980 return SYNC_AGENT_DA_ERR_DROP_TABLE_FAILED;
4984 SYNC_AGENT_DA_MEMORY_FREE(new_table_drop);
4991 sync_agent_da_return_e _delete_changlog_table(SYNC_AGENT_DA_HANDLER * daci_handler, int account_id)
4995 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
4997 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
4998 char *new_table_delete = 0;
5000 /* 9. delete account_item_changelog_tbl */
5001 new_table_delete = __replace_table_name(g_daci_delete_table[SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG], account_id, 1);
5003 ret = __query_exec(daci_handler, new_table_delete, "Item_changelog_tbl_delete failed");
5004 if (ret != SYNC_AGENT_DA_SUCCESS) {
5005 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5009 SYNC_AGENT_DA_MEMORY_FREE(new_table_delete);
5016 int __exist_table(SYNC_AGENT_DA_HANDLER * daci_handler, const char *table_name)
5021 int table_count = 0;
5022 char *query = "select count(*) from sqlite_master where tbl_name= ?";
5024 stmt = __query_prepare(daci_handler, query, strlen(query));
5025 if ((stmt != NULL) && (__stmt_bind_text(daci_handler, stmt, 1, table_name) == SYNC_AGENT_DA_SUCCESS)) {
5027 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
5028 table_count = __stmt_column_int(stmt, 0);
5030 __stmt_finalize(daci_handler, stmt);
5032 if (table_count > 0) {
5044 int _get_data_count(SYNC_AGENT_DA_HANDLER * daci_handler, char *query, int size)
5048 retvm_if(daci_handler == NULL, 0, "SYNC_AGENT_DA_HANDLER is NULL !!");
5049 retvm_if(query == NULL, 0, "query is NULL !!");
5054 stmt = __query_prepare(daci_handler, query, size);
5056 if (_stmt_read_step(daci_handler, stmt) == SYNC_AGENT_DA_ERR_MORE_DATA)
5057 data_count = __stmt_column_int(stmt, 0);
5059 __stmt_finalize(daci_handler, stmt);
5067 char *__replace_table_name(char *oldTable, int account_id, int count)
5071 retvm_if(oldTable == NULL, NULL, "old Table is NULL !!");
5073 char *new_table = 0;
5076 /* SVACE : Measure the size for allocation memory. */
5077 if (count == 1) /* table name convert */
5078 length = snprintf(0, 0, oldTable, account_id);
5079 else if (count == 4) /* table create query convert */
5080 length = snprintf(0, 0, oldTable, account_id, account_id, account_id, account_id);
5082 new_table = SYNC_AGENT_DA_MEMORY_MALLOC(char *, sizeof(char), (length + 1));
5083 if (new_table == NULL) {
5084 _DEBUG_ERROR("memory_allocation failed");
5089 snprintf(new_table, length + 1, oldTable, account_id);
5090 } else if (count == 4) {
5091 snprintf(new_table, length + 1, oldTable, account_id, account_id, account_id, account_id);
5099 char *__get_table_name(sync_agent_da_table_name_e table_name)
5103 char *table_str = 0;
5105 switch (table_name) {
5106 case SYNC_AGENT_DA_TABLE_NAME_ACCOUNT:
5108 table_str = "account_tbl";
5111 case SYNC_AGENT_DA_TABLE_NAME_FOLDER:
5113 table_str = "folder_tbl";
5116 case SYNC_AGENT_DA_TABLE_NAME_ITEM:
5118 table_str = "item_tbl";
5121 case SYNC_AGENT_DA_TABLE_NAME_CONFIG:
5123 table_str = "config_tbl";
5126 case SYNC_AGENT_DA_TABLE_NAME_ACCOUNT_ITEM_CHANGELOG:
5128 table_str = "account_item_changelog_tbl";
5131 case SYNC_AGENT_DA_TABLE_NAME_LAST_ANCHOR:
5133 table_str = "last_anchor_tbl";
5136 case SYNC_AGENT_DA_TABLE_NAME_MAPPING:
5138 table_str = "mapping_tbl";
5141 case SYNC_AGENT_DA_TABLE_NAME_ID_PROVIDER:
5143 table_str = "id_provider_tbl";
5146 case SYNC_AGENT_DA_TABLE_NAME_ID_PAGE:
5148 table_str = "id_page_tbl";
5160 char *_get_column_name(sync_agent_da_column_name_e column_name)
5164 char *column_str = 0;
5166 switch (column_name) {
5167 case SYNC_AGENT_DA_COLUMN_NAME_ITEM_ID:
5169 column_str = "item_id";
5172 case SYNC_AGENT_DA_COLUMN_NAME_SERVICE_ID:
5174 column_str = "service_id";
5186 int _get_next_account_id(void)
5190 int next_account_id = 1;
5191 int *account_id_list = 0;
5195 account_id_list = da_get_account_id_list(&count);
5196 if (account_id_list != NULL) {
5197 for (i = 0; i < count; i++) {
5198 if ((i + 1) != account_id_list[i])
5204 free(account_id_list);
5209 return next_account_id;
5212 sync_agent_da_return_e _delete_account(SYNC_AGENT_DA_HANDLER * daci_handler, sync_agent_da_table_name_e table_name, int account_id)
5216 retvm_if(daci_handler == NULL, SYNC_AGENT_DA_ERRORS, "SYNC_AGENT_DA_HANDLER is NULL !!");
5219 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
5220 char *table_str = 0;
5221 char g_daci_query[SYNC_AGENT_DA_MAX_QUERY_LENGTH] = { 0, };
5223 table_str = __get_table_name(table_name);
5225 if (!strcmp(table_str, "config_tbl")) {
5226 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where config_id = %d", table_str, account_id);
5227 } else if (!strcmp(table_str, "id_provider_tbl") || !strcmp(table_str, "id_page_tbl")) {
5230 snprintf(g_daci_query, sizeof(g_daci_query), "delete from %s where account_id = %d", table_str, account_id);
5233 _DEBUG_TRACE("i = %d, tableName = %s, query = %s", table_name, table_str, g_daci_query);
5234 stmt = __query_prepare(daci_handler, g_daci_query, strlen(g_daci_query));
5236 return SYNC_AGENT_DA_ERR_QUERY_FAILED;
5238 ret = __stmt_write_step(daci_handler, stmt);
5239 __stmt_finalize(daci_handler, stmt);
5247 *=============================================================================================================================
5249 *=============================================================================================================================
5251 void da_drop_table(SYNC_AGENT_DA_HANDLER * daci_handler, int *accountIdList, int account_count)
5255 retm_if(daci_handler == NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
5256 retm_if(accountIdList == NULL, "account Id List is NULL !!");
5260 for (i = 0; i < account_count; i++)
5261 _drop_changelog_table(daci_handler, accountIdList[i]);
5266 char *da_get_daci_file_path(void)
5272 return daci_file_path;