summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJin Yoon <jinny.yoon@samsung.com>2015-06-03 18:20:29 +0900
committerJin Yoon <jinny.yoon@samsung.com>2015-06-03 18:20:29 +0900
commitab00e67c320991029c2d2811610792754d2e5164 (patch)
tree0805cc31a7686d18d4f5cf16236acbdae253bd86
parent83e94ac707959f362b2383dc6fda9feb8508b374 (diff)
downloadadventure-ab00e67c320991029c2d2811610792754d2e5164.tar.gz
adventure-ab00e67c320991029c2d2811610792754d2e5164.tar.bz2
adventure-ab00e67c320991029c2d2811610792754d2e5164.zip
DB : modify the prototyping
-rw-r--r--inc/db.h46
-rw-r--r--src/db.c133
2 files changed, 80 insertions, 99 deletions
diff --git a/inc/db.h b/inc/db.h
index 279a6e3..bdc2793 100644
--- a/inc/db.h
+++ b/inc/db.h
@@ -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__
diff --git a/src/db.c b/src/db.c
index 2ab79e0..bec0518 100644
--- a/src/db.c
+++ b/src/db.c
@@ -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 */