* limitations under the License.
*/
-#include <algorithm>
-
-#include "db_manager.h"
#include "log.h"
-#include "tac_common.h"
+#include "db_manager.h"
+
+#include <algorithm>
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "DOTNET_INSTALLER_PLUGIN"
-static int dbIntegrityCheckCb(void *user_data, int argc, char **argv, char **not_used)
+static int checkIntegrityDBCb(void *user_data, int argc, char **argv, char **not_used)
{
bool* is_db_corrupted = static_cast<bool*>(user_data);
std::string result_DB_check = argv[0];
return 0;
}
-sqlite3* dbCreate(std::string path, std::string query)
+sqlite3* createDB(std::string path, std::string query)
{
sqlite3 *sqlite = NULL;
bool is_db_corrupted = false;
int ret = sqlite3_open(path.c_str(), &sqlite);
if (ret != SQLITE_OK) {
_INFO("DB file is corrupted, start to recover corrupted db");
- if (restoreTACDB() != TAC_ERROR_NONE) {
- _ERR("Sqlite error : [%d, %s]", ret, path.c_str());
- return NULL;
- }
- return dbCreate(path, query);
+ return sqlite;
}
ret = sqlite3_exec(sqlite, "PRAGMA journal_mode = PERSIST", NULL, NULL, NULL);
if (ret != SQLITE_OK) {
sqlite = NULL;
return sqlite;
}
- ret = sqlite3_exec(sqlite, "PRAGMA integrity_check", dbIntegrityCheckCb, &is_db_corrupted, NULL);
+ ret = sqlite3_exec(sqlite, "PRAGMA integrity_check", checkIntegrityDBCb, &is_db_corrupted, NULL);
if (ret == SQLITE_CORRUPT || is_db_corrupted) {
_INFO("DB file is corrupted, start to recover corrupted db");
- if (restoreTACDB() != TAC_ERROR_NONE) {
- _ERR("Sqlite error : [%d, %s]", ret, path.c_str());
- sqlite3_close(sqlite);
- sqlite = NULL;
- return sqlite;
- }
- return dbCreate(path, query);
+ sqlite3_close(sqlite);
+ sqlite = NULL;
+ return sqlite;
}
return sqlite;
}
-sqlite3* dbOpen(std::string path)
+sqlite3* openDB(std::string path)
{
sqlite3 *sqlite = NULL;
bool is_db_corrupted = false;
int ret = sqlite3_open(path.c_str(), &sqlite);
if (ret != SQLITE_OK) {
_INFO("DB file is corrupted, start to recover corrupted db");
- if (restoreTACDB() != TAC_ERROR_NONE) {
- _ERR("Sqlite error : [%d, %s]", ret, path.c_str());
- return NULL;
- }
- return dbOpen(path);
+ return sqlite;
}
- ret = sqlite3_exec(sqlite, "PRAGMA integrity_check", dbIntegrityCheckCb, &is_db_corrupted, NULL);
+ ret = sqlite3_exec(sqlite, "PRAGMA integrity_check", checkIntegrityDBCb, &is_db_corrupted, NULL);
if (ret == SQLITE_CORRUPT || is_db_corrupted) {
_INFO("DB file is corrupted, start to recover corrupted db");
- if (restoreTACDB() != TAC_ERROR_NONE) {
- _ERR("Sqlite error : [%d, %s]", ret, path.c_str());
- sqlite3_close(sqlite);
- sqlite = NULL;
- return sqlite;
- }
- return dbOpen(path);
+ sqlite3_close(sqlite);
+ sqlite = NULL;
+ return sqlite;
}
return sqlite;
}
-void dbFinalize(sqlite3_stmt *stmt)
+void finalizeDB(sqlite3_stmt *stmt)
{
if (stmt) {
sqlite3_finalize(stmt);
}
}
-void dbClose(sqlite3 *sqlite)
+void closeDB(sqlite3 *sqlite)
{
if (sqlite) {
sqlite3_exec(sqlite, "COMMIT;", NULL, NULL, NULL);
}
}
-void dbRollback(sqlite3 *sqlite)
+void rollbackDB(sqlite3 *sqlite)
{
if (sqlite) {
sqlite3_exec(sqlite, "ROLLBACK;", NULL, NULL, NULL);
}
}
-bool dbUpdate(sqlite3 *sqlite, std::string path, std::string query)
+static bool execDB(sqlite3 *sqlite, std::string query)
{
- sqlite3_stmt *stmt = NULL;
- int ret = sqlite3_exec(sqlite, "BEGIN;", NULL, NULL, NULL);
- ret = sqlite3_prepare(sqlite, query.c_str(), query.size(), &stmt, NULL);
+ int ret = sqlite3_exec(sqlite, query.c_str(), NULL, NULL, NULL);
if (ret != SQLITE_OK) {
_ERR("Sqlite error : [%d, %s]", ret, sqlite3_errmsg(sqlite));
- dbClose(sqlite);
- return false;
- }
- ret = sqlite3_step(stmt);
- if (ret != SQLITE_DONE && ret != SQLITE_ROW && ret != SQLITE_OK) {
- _ERR("Sqlite error : [%d, %s]", ret, sqlite3_errmsg(sqlite));
- dbFinalize(stmt);
- dbClose(sqlite);
return false;
}
- dbFinalize(stmt);
return true;
}
-bool dbInsert(sqlite3 *sqlite, std::string path, std::string query)
+bool updateDB(sqlite3 *sqlite, std::string query)
{
- sqlite3_stmt *stmt = NULL;
- int ret = sqlite3_exec(sqlite, "BEGIN;", NULL, NULL, NULL);
- ret = sqlite3_prepare(sqlite, query.c_str(), query.size(), &stmt, NULL);
- if (ret != SQLITE_OK) {
- _ERR("Sqlite error : [%d, %s]", ret, sqlite3_errmsg(sqlite));
- dbClose(sqlite);
- return false;
- }
- ret = sqlite3_step(stmt);
- if (ret != SQLITE_DONE && ret != SQLITE_ROW && ret != SQLITE_OK) {
- _ERR("Sqlite error : [%d, %s]", ret, sqlite3_errmsg(sqlite));
- dbFinalize(stmt);
- dbClose(sqlite);
- return false;
- }
- dbFinalize(stmt);
- return true;
+ return execDB(sqlite, query);
}
-std::vector<std::string> dbSelect(sqlite3 *sqlite, std::string path, std::string query)
+bool insertDB(sqlite3 *sqlite, std::string query)
{
- std::vector<std::string> updateDB;
+ return execDB(sqlite, query);
+}
+
+bool deleteDB(sqlite3 *sqlite, std::string query)
+{
+ return execDB(sqlite, query);
+}
+
+std::vector<std::string> selectDB(sqlite3 *sqlite, std::string query)
+{
+ std::vector<std::string> selectData;
sqlite3_stmt* stmt = NULL;
const char* str = NULL;
int ret = sqlite3_prepare_v2(sqlite, query.c_str(), query.size(), &stmt, NULL);
if (ret != SQLITE_OK) {
_ERR("Sqlite error : [%d, %s]", ret, sqlite3_errmsg(sqlite));
- dbClose(sqlite);
- return updateDB;
+ return selectData;
}
while (sqlite3_step(stmt) == SQLITE_ROW) {
str = (const char *) sqlite3_column_text(stmt, 2);
- updateDB.push_back((!str || !strlen(str)) ? NULL : strdup(str));
+ selectData.push_back((!str || !strlen(str)) ? NULL : strdup(str));
}
- dbFinalize(stmt);
- return updateDB;
-}
-
-bool dbDelete(sqlite3 *sqlite, std::string path, std::string query)
-{
- sqlite3_stmt *stmt = NULL;
- int ret = sqlite3_exec(sqlite, "BEGIN;", NULL, NULL, NULL);
- ret = sqlite3_prepare(sqlite, query.c_str(), query.size(), &stmt, NULL);
- if (ret != SQLITE_OK) {
- _ERR("Sqlite error : [%d, %s]", ret, sqlite3_errmsg(sqlite));
- dbClose(sqlite);
- return false;
- }
- ret = sqlite3_step(stmt);
- if (ret != SQLITE_DONE && ret != SQLITE_ROW && ret != SQLITE_OK) {
- _ERR("Sqlite error : [%d, %s]", ret, sqlite3_errmsg(sqlite));
- dbFinalize(stmt);
- dbClose(sqlite);
- return false;
- }
- dbFinalize(stmt);
- return true;
+ finalizeDB(stmt);
+ return selectData;
}