diff options
author | Jin Yoon <jinny.yoon@samsung.com> | 2015-06-03 18:20:29 +0900 |
---|---|---|
committer | Jin Yoon <jinny.yoon@samsung.com> | 2015-06-03 18:20:29 +0900 |
commit | ab00e67c320991029c2d2811610792754d2e5164 (patch) | |
tree | 0805cc31a7686d18d4f5cf16236acbdae253bd86 | |
parent | 83e94ac707959f362b2383dc6fda9feb8508b374 (diff) | |
download | adventure-ab00e67c320991029c2d2811610792754d2e5164.tar.gz adventure-ab00e67c320991029c2d2811610792754d2e5164.tar.bz2 adventure-ab00e67c320991029c2d2811610792754d2e5164.zip |
DB : modify the prototyping
-rw-r--r-- | inc/db.h | 46 | ||||
-rw-r--r-- | src/db.c | 133 |
2 files changed, 80 insertions, 99 deletions
@@ -21,35 +21,35 @@ #include <sqlite3.h> #include "util.h" -extern appl_error_e db_open(void); -extern void db_close(void); +HAPI sqlite3 *db_open(void); +HAPI void db_close(sqlite3 *db); -extern sqlite3_stmt *db_prepare(const char *query); -extern appl_error_e db_next(sqlite3_stmt *stmt); -extern appl_error_e db_reset(sqlite3_stmt *stmt); +HAPI sqlite3_stmt *db_prepare(sqlite3 *db, const char *query); +HAPI appl_error_e db_next(sqlite3 *db, sqlite3_stmt *stmt); +HAPI appl_error_e db_reset(sqlite3 *db, sqlite3_stmt *stmt); -extern appl_error_e db_bind_bool(sqlite3_stmt *stmt, int idx, bool value); -extern appl_error_e db_bind_int(sqlite3_stmt *stmt, int idx, int value); -extern appl_error_e db_bind_double(sqlite3_stmt *stmt, int idx, double value); -extern appl_error_e db_bind_str(sqlite3_stmt *stmt, int idx, const char *str); +HAPI appl_error_e db_bind_bool(sqlite3 *db, sqlite3_stmt *stmt, int idx, bool value); +HAPI appl_error_e db_bind_int(sqlite3 *db, sqlite3_stmt *stmt, int idx, int value); +HAPI appl_error_e db_bind_double(sqlite3 *db, sqlite3_stmt *stmt, int idx, double value); +HAPI appl_error_e db_bind_str(sqlite3 *db, sqlite3_stmt *stmt, int idx, const char *str); -extern bool db_get_bool(sqlite3_stmt *stmt, int index); -extern int db_get_int(sqlite3_stmt *stmt, int index); -extern int db_get_double(sqlite3_stmt *stmt, int index); -extern const char *db_get_str(sqlite3_stmt *stmt, int index); +HAPI bool db_get_bool(sqlite3_stmt *stmt, int index); +HAPI int db_get_int(sqlite3_stmt *stmt, int index); +HAPI int db_get_double(sqlite3_stmt *stmt, int index); +HAPI const char *db_get_str(sqlite3_stmt *stmt, int index); -extern appl_error_e db_finalize(sqlite3_stmt *stmt); -extern appl_error_e db_exec(const char *query); +HAPI appl_error_e db_finalize(sqlite3 *db, sqlite3_stmt *stmt); +HAPI appl_error_e db_exec(sqlite3 *db, const char *query); -extern appl_error_e db_begin_transaction(void); -extern appl_error_e db_end_transaction(void); +HAPI appl_error_e db_begin_transaction(sqlite3 *db); +HAPI appl_error_e db_end_transaction(sqlite3 *db); -extern appl_error_e db_create_table(void); -extern appl_error_e db_drop_table(void); +HAPI appl_error_e db_drop_table(sqlite3 *db); +HAPI appl_error_e db_create_table(sqlite3 *db); -extern appl_error_e db_insert_version(int version); -extern appl_error_e db_remove_version(int version); -extern appl_error_e db_update_version(int version); -extern appl_error_e db_count_version(void); +HAPI appl_error_e db_insert_version(sqlite3 *db, int version); +HAPI appl_error_e db_remove_version(sqlite3 *db, int version); +HAPI appl_error_e db_update_version(sqlite3 *db, int version); +HAPI appl_error_e db_count_version(sqlite3 *db); #endif // __ADVENTURE_DB_H__ @@ -31,16 +31,10 @@ -static struct { - sqlite3 *db; -} db_info = { - .db = NULL, -}; - - -HAPI appl_error_e db_open(void) +HAPI sqlite3 *db_open(void) { + sqlite3 *db = NULL; char *path = NULL; char db_file[FILE_LEN] = {0, }; int ret = SQLITE_OK; @@ -50,42 +44,37 @@ HAPI appl_error_e db_open(void) snprintf(db_file, sizeof(db_file), "%s/%s", path, APP_DB_FILE); - ret = sqlite3_open(db_file, &db_info.db); + ret = sqlite3_open(db_file, &db); if (SQLITE_OK != ret) { - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); free(path); - return APPL_ERROR_FAIL; + return NULL; } free(path); - return APPL_ERROR_NONE; + return db; } -HAPI void db_close(void) +HAPI void db_close(sqlite3 *db) { - if (!db_info.db) { - _D("DB is already NULL"); - return; - } - - sqlite3_close(db_info.db); - db_info.db = NULL; + ret_if(!db); + sqlite3_close(db); } -HAPI sqlite3_stmt *db_prepare(const char *query) +HAPI sqlite3_stmt *db_prepare(sqlite3 *db, const char *query) { sqlite3_stmt *stmt = NULL; int ret = SQLITE_OK; retv_if(!query, NULL); - ret = sqlite3_prepare_v2(db_info.db, query, strlen(query), &stmt, NULL); + ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL); if (SQLITE_OK != ret) { - _E("%s, %s", query, sqlite3_errmsg(db_info.db)); + _E("%s, %s", query, sqlite3_errmsg(db)); return NULL; } @@ -94,7 +83,7 @@ HAPI sqlite3_stmt *db_prepare(const char *query) -HAPI appl_error_e db_next(sqlite3_stmt *stmt) +HAPI appl_error_e db_next(sqlite3 *db, sqlite3_stmt *stmt) { int ret = SQLITE_OK; @@ -107,7 +96,7 @@ HAPI appl_error_e db_next(sqlite3_stmt *stmt) case SQLITE_DONE: return APPL_ERROR_NO_DATA; default: - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); return APPL_ERROR_FAIL; } @@ -116,7 +105,7 @@ HAPI appl_error_e db_next(sqlite3_stmt *stmt) -HAPI appl_error_e db_reset(sqlite3_stmt *stmt) +HAPI appl_error_e db_reset(sqlite3 *db, sqlite3_stmt *stmt) { int ret = SQLITE_OK; @@ -124,7 +113,7 @@ HAPI appl_error_e db_reset(sqlite3_stmt *stmt) ret = sqlite3_reset(stmt); if (SQLITE_OK != ret) { - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); return APPL_ERROR_FAIL; } @@ -135,7 +124,7 @@ HAPI appl_error_e db_reset(sqlite3_stmt *stmt) -HAPI appl_error_e db_bind_bool(sqlite3_stmt *stmt, int idx, bool value) +HAPI appl_error_e db_bind_bool(sqlite3 *db, sqlite3_stmt *stmt, int idx, bool value) { int ret = SQLITE_OK; @@ -143,7 +132,7 @@ HAPI appl_error_e db_bind_bool(sqlite3_stmt *stmt, int idx, bool value) ret = sqlite3_bind_int(stmt, idx, (int) value); if (SQLITE_OK != ret) { - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); return APPL_ERROR_FAIL; } @@ -152,7 +141,7 @@ HAPI appl_error_e db_bind_bool(sqlite3_stmt *stmt, int idx, bool value) -HAPI appl_error_e db_bind_int(sqlite3_stmt *stmt, int idx, int value) +HAPI appl_error_e db_bind_int(sqlite3 *db, sqlite3_stmt *stmt, int idx, int value) { int ret = SQLITE_OK; @@ -160,7 +149,7 @@ HAPI appl_error_e db_bind_int(sqlite3_stmt *stmt, int idx, int value) ret = sqlite3_bind_int(stmt, idx, value); if (SQLITE_OK != ret) { - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); return APPL_ERROR_FAIL; } @@ -169,7 +158,7 @@ HAPI appl_error_e db_bind_int(sqlite3_stmt *stmt, int idx, int value) -HAPI appl_error_e db_bind_double(sqlite3_stmt *stmt, int idx, double value) +HAPI appl_error_e db_bind_double(sqlite3 *db, sqlite3_stmt *stmt, int idx, double value) { int ret = SQLITE_OK; @@ -177,7 +166,7 @@ HAPI appl_error_e db_bind_double(sqlite3_stmt *stmt, int idx, double value) ret = sqlite3_bind_double(stmt, idx, value); if (SQLITE_OK != ret) { - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); return APPL_ERROR_FAIL; } @@ -186,7 +175,7 @@ HAPI appl_error_e db_bind_double(sqlite3_stmt *stmt, int idx, double value) -HAPI appl_error_e db_bind_str(sqlite3_stmt *stmt, int idx, const char *str) +HAPI appl_error_e db_bind_str(sqlite3 *db, sqlite3_stmt *stmt, int idx, const char *str) { int ret = SQLITE_OK; @@ -195,7 +184,7 @@ HAPI appl_error_e db_bind_str(sqlite3_stmt *stmt, int idx, const char *str) ret = sqlite3_bind_text(stmt, idx, str, strlen(str), SQLITE_TRANSIENT); if (SQLITE_OK != ret) { - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); return APPL_ERROR_FAIL; } @@ -236,7 +225,7 @@ HAPI const char *db_get_str(sqlite3_stmt *stmt, int index) -HAPI appl_error_e db_finalize(sqlite3_stmt *stmt) +HAPI appl_error_e db_finalize(sqlite3 *db, sqlite3_stmt *stmt) { int ret = SQLITE_OK; @@ -244,7 +233,7 @@ HAPI appl_error_e db_finalize(sqlite3_stmt *stmt) ret = sqlite3_finalize(stmt); if (SQLITE_OK != ret) { - _E("%s", sqlite3_errmsg(db_info.db)); + _E("%s", sqlite3_errmsg(db)); return APPL_ERROR_FAIL; } @@ -253,33 +242,33 @@ HAPI appl_error_e db_finalize(sqlite3_stmt *stmt) -HAPI appl_error_e db_exec(const char *query) +HAPI appl_error_e db_exec(sqlite3 *db, const char *query) { sqlite3_stmt *stmt = NULL; retv_if(!query, APPL_ERROR_INVALID_PARAMETER); - stmt = db_prepare(query); + stmt = db_prepare(db, query); retv_if(!stmt, APPL_ERROR_FAIL); - goto_if(APPL_ERROR_FAIL == db_next(stmt), ERROR); - goto_if(APPL_ERROR_FAIL == db_finalize(stmt), ERROR); + goto_if(APPL_ERROR_FAIL == db_next(db, stmt), ERROR); + goto_if(APPL_ERROR_FAIL == db_finalize(db, stmt), ERROR); return APPL_ERROR_NONE; ERROR: - if (stmt) db_finalize(stmt); + if (stmt) db_finalize(db, stmt); return APPL_ERROR_FAIL; } -HAPI appl_error_e db_begin_transaction(void) +HAPI appl_error_e db_begin_transaction(sqlite3 *db) { int ret = SQLITE_BUSY; while (1) { - ret = sqlite3_exec(db_info.db, "BEGIN IMMEDIATE TRANSACTION", NULL, NULL, NULL); + ret = sqlite3_exec(db, "BEGIN IMMEDIATE TRANSACTION", NULL, NULL, NULL); if (SQLITE_BUSY != ret) { break; } @@ -297,12 +286,12 @@ HAPI appl_error_e db_begin_transaction(void) -HAPI appl_error_e db_end_transaction(void) +HAPI appl_error_e db_end_transaction(sqlite3 *db) { int ret = SQLITE_OK; while (1) { - ret = sqlite3_exec(db_info.db, "COMMIT TRANSACTION", NULL, NULL, NULL); + ret = sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL); if (SQLITE_BUSY != ret) { break; } @@ -320,7 +309,7 @@ HAPI appl_error_e db_end_transaction(void) -HAPI appl_error_e db_create_table(void) +HAPI appl_error_e db_create_table(sqlite3 *db) { const char *TABLES[] = { "CREATE TABLE IF NOT EXIST db_checksum (version INT);", @@ -374,13 +363,13 @@ HAPI appl_error_e db_create_table(void) ", name TEXT" ");", }; + int count = 0; int i = 0; - retv_if(APPL_ERROR_NONE != db_open(), APPL_ERROR_FAIL); - - for (; i < sizeof(char *) / sizeof(TABLES); i++) { + count = sizeof(TABLES) / sizeof(char *); + for (; i < count; i++) { _D("Create a table[%s]", TABLES[i]); - break_if(db_exec(TABLES[i]) != APPL_ERROR_NONE); + break_if(db_exec(db, TABLES[i]) != APPL_ERROR_NONE); } return APPL_ERROR_FAIL; @@ -388,7 +377,7 @@ HAPI appl_error_e db_create_table(void) -HAPI appl_error_e db_drop_table(void) +HAPI appl_error_e db_drop_table(sqlite3 *db) { const char *TABLES[] = { "DROP TABLE IF EXIST db_checksum;", @@ -399,12 +388,12 @@ HAPI appl_error_e db_drop_table(void) "DROP TABLE IF EXIST purchase;", "DROP TABLE IF EXIST user;", }; + int count = 0; int i = 0; - retv_if(APPL_ERROR_NONE != db_open(), APPL_ERROR_FAIL); - - for (; i < sizeof(char *) / sizeof(TABLES); i++) { - _D("Create a table[%s]", TABLES[i]); + count = sizeof(TABLES) / sizeof(char *); + for (; i < count; i++) { + _D("Drop a table[%s]", TABLES[i]); break_if(db_exec(TABLES[i]) != APPL_ERROR_NONE); } @@ -413,17 +402,15 @@ HAPI appl_error_e db_drop_table(void) -HAPI appl_error_e db_insert_version(int version) +HAPI appl_error_e db_insert_version(sqlite3 *db, int version) { const char *QUERY_SYNTAX = "INSERT INTO db_checksum (version) values (%d);"; char *query = NULL; - retv_if(APPL_ERROR_NONE != db_open(), APPL_ERROR_FAIL); - query = sqlite3_mprintf(QUERY_SYNTAX, version); retv_if(!query, APPL_ERROR_FAIL); - if (db_exec(query) != APPL_ERROR_NONE) { + if (db_exec(db, query) != APPL_ERROR_NONE) { _E("Cannot execute query.[%s]", query); sqlite3_free(query); return APPL_ERROR_FAIL; @@ -438,17 +425,15 @@ HAPI appl_error_e db_insert_version(int version) -HAPI appl_error_e db_remove_version(int version) +HAPI appl_error_e db_remove_version(sqlite3 *db, int version) { const char *QUERY_SYNTAX = "DELETE FROM db_checksum WHERE version=%d;"; char *query = NULL; - retv_if(APPL_ERROR_NONE != db_open(), APPL_ERROR_FAIL); - query = sqlite3_mprintf(QUERY_SYNTAX, version); retv_if(!query, APPL_ERROR_FAIL); - if (db_exec(query) != APPL_ERROR_NONE) { + if (db_exec(db, query) != APPL_ERROR_NONE) { _E("Cannot execute query.[%s]", query); sqlite3_free(query); return APPL_ERROR_FAIL; @@ -463,17 +448,15 @@ HAPI appl_error_e db_remove_version(int version) -HAPI appl_error_e db_update_version(int version) +HAPI appl_error_e db_update_version(sqlite3 *db, int version) { const char *QUERY_SYNTAX = "UPDATE db_checksum SET version=%d;"; char *query = NULL; - retv_if(APPL_ERROR_NONE != db_open(), APPL_ERROR_FAIL); - query = sqlite3_mprintf(QUERY_SYNTAX, version); retv_if(!query, APPL_ERROR_FAIL); - if (db_exec(query) != APPL_ERROR_NONE) { + if (db_exec(db, query) != APPL_ERROR_NONE) { _E("Cannot execute query.[%s]", query); sqlite3_free(query); return APPL_ERROR_FAIL; @@ -488,26 +471,24 @@ HAPI appl_error_e db_update_version(int version) -HAPI appl_error_e db_count_version(void) +HAPI appl_error_e db_count_version(sqlite3 *db) { const char *QUERY_SYNTAX = "SELECT COUNT(*) FROM db_checksum;"; sqlite3_stmt *st = NULL; int count = 0; - retv_if(APPL_ERROR_NONE != db_open(), APPL_ERROR_FAIL); - - st = db_prepare(QUERY_SYNTAX); + st = db_prepare(db, QUERY_SYNTAX); retv_if(!st, APPL_ERROR_FAIL); - if (db_next(st) == APPL_ERROR_FAIL) { + if (db_next(db, st) == APPL_ERROR_FAIL) { _E("db_next error"); - db_finalize(st); + db_finalize(db, st); return -1; } count = db_get_int(st, 0); - db_reset(st); - db_finalize(st); + db_reset(db, st); + db_finalize(db, st); /* keep the home DB opened */ |