#ifndef __UA_MANAGER_DATABASE_H__
#define __UA_MANAGER_DATABASE_H__
+#include <sqlite3.h>
#include <ua-plugin-manager.h>
#include <ua-api.h>
#include "ua-manager-core.h"
/* db init/deinit */
int _uam_db_initialize(void);
int _uam_db_deinitialize(void);
+sqlite3 *__uam_db_recover_database(void);
/* delete operations */
int _uam_db_clear(void);
FUNC_EXIT;
}
-static sqlite3 *__uam_adv_db_get_database(void)
-{
- if (database == NULL)
- _uam_db_initialize_once();
-
- return database;
-}
-
int _uam_db_get_max_ibeacon_id(void)
{
FUNC_ENTRY;
case SQLITE_ERROR:
default:
UAM_ERR("Failed to select max ibeacon adv: %s",
- sqlite3_errmsg(__uam_adv_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to insert ibeacon adv info: %s",
- sqlite3_errmsg(__uam_adv_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate service info: %s",
- sqlite3_errmsg(__uam_adv_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
FUNC_ENTRY;
char *sql = NULL;
- sql = sqlite3_mprintf("PRAGMA integrity_check", __uam_db_check_integrity_cb);
- retv_if(UAM_ERROR_NONE != __uam_db_exec_sql(sql, NULL), UAM_ERROR_DB_FAILED);
+ sql = sqlite3_mprintf("PRAGMA integrity_check");
+ retv_if(UAM_ERROR_NONE != __uam_db_exec_sql(sql, __uam_db_check_integrity_cb), UAM_ERROR_DB_FAILED);
sqlite3_free(sql);
UAM_DBG("Successfully verified database integrity");
/*
* 4) Each __is_table_existing() open DB file again and again.. it is redundant
*/
- if (!__is_table_existing(UAM_DB_USERDATA_TABLE))
- __ua_create_table(CREATE_USERDATA_TABLE);
+ if (!__uam_db_is_table_existing(UAM_DB_USERDATA_TABLE))
+ __uam_db_create_table(CREATE_USERDATA_TABLE);
if (!__uam_db_is_table_existing(UAM_DB_DEVICES_TABLE))
__uam_db_create_table(CREATE_DEVICES_TABLE);
return UAM_ERROR_NONE;
}
+sqlite3 *__uam_db_recover_database(void)
+{
+ if (database != NULL) {
+ sqlite3_close(database);
+ unlink(DATABASE_FULL_PATH);
+ database = NULL;
+ }
+
+ _uam_db_initialize_once();
+ return database;
+}
+
int _uam_db_initialize(void)
{
FUNC_ENTRY;
database = NULL;
EXEC(UAM_ERROR_NONE, _uam_db_initialize_once(), handle_error);
-
EXEC(UAM_ERROR_NONE, _uam_user_db_initialize(), handle_error);
EXEC(UAM_ERROR_NONE, _ua_device_db_initialize(), handle_error);
EXEC(UAM_ERROR_NONE, _ua_service_db_initialize(), handle_error);
FUNC_EXIT;
}
-/*
- * 5) it just check only dtabase is null but all error-case
- * we just call the function for recovery.
- */
-static sqlite3 *__ua_device_db_get_database(void)
-{
- if (database == NULL)
- _uam_db_initialize_once();
-
- return database;
-}
-
int _uam_db_get_max_device_number(void)
{
FUNC_ENTRY;
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to update ip address: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to update presence: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to update device timestamp: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to update device discriminant: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to insert device info: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete device info %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("User info deleted");
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to select device info %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
} else {
UAM_DBG("Device info found");
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info: %s",
- sqlite3_errmsg(__ua_device_db_get_database())); /* 5) it does not recover the DB because database is not null */
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete device data %s",
- sqlite3_errmsg(__ua_device_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
return UAM_ERROR_DB_FAILED;
}
-static sqlite3 *__ua_device_service_db_get_database(void)
-{
- if (database == NULL)
- _uam_db_initialize_once();
-
- return database;
-}
-
int _uam_db_insert_service(int device_number, int service_number)
{
FUNC_ENTRY;
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to insert device-service info: %s",
- sqlite3_errmsg(__ua_device_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete device data %s",
- sqlite3_errmsg(__ua_device_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete device-service info %s",
- sqlite3_errmsg(__ua_device_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Device-service info deleted");
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete device-service info %s",
- sqlite3_errmsg(__ua_device_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Device-service info deleted");
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info: %s",
- sqlite3_errmsg(__ua_device_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info: %s",
- sqlite3_errmsg(__ua_device_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
FUNC_EXIT;
}
-static sqlite3 *__ua_service_db_get_database(void)
-{
- if (database == NULL)
- _uam_db_initialize_once();
-
- return database;
-}
-
int _uam_db_get_max_service_number(void)
{
FUNC_ENTRY;
case SQLITE_ERROR:
default:
UAM_ERR("Failed to select max service number: %s",
- sqlite3_errmsg(__ua_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to insert service info: %s",
- sqlite3_errmsg(__ua_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete service info %s",
- sqlite3_errmsg(__ua_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("Service info deleted");
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete service data %s",
- sqlite3_errmsg(__ua_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to update service timestamp: %s",
- sqlite3_errmsg(__ua_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate device info: %s",
- sqlite3_errmsg(__ua_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
}
} while (rc == SQLITE_ROW);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate service info: %s",
- sqlite3_errmsg(__ua_service_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
FUNC_EXIT;
}
-static sqlite3 *__ua_db_get_database(void)
-{
- if (database == NULL)
- _uam_db_initialize_once();
-
- return database;
-}
-
int _uam_db_get_max_user_id(void)
{
FUNC_ENTRY;
case SQLITE_ERROR:
default:
UAM_ERR("Failed to select max user id: %s",
- sqlite3_errmsg(__ua_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to insert user info: %s",
- sqlite3_errmsg(__ua_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete user info %s",
- sqlite3_errmsg(__ua_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
} else
UAM_DBG("User info deleted");
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to select user info %s",
- sqlite3_errmsg(__ua_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
} else {
info = g_new0(db_user_info_t, 1);
case SQLITE_ERROR:
default:
UAM_ERR("Failed to enumerate user info: %s",
- sqlite3_errmsg(__ua_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
}
} while (rc == SQLITE_ROW);
*/
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to delete user data %s",
- sqlite3_errmsg(__ua_db_get_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}