Modify the bf::exists function to check error.value (#275)
[platform/core/dotnet/launcher.git] / NativeLauncher / util / db_manager.cc
index d42c066..6d340ff 100644 (file)
  * 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];
@@ -39,18 +38,14 @@ static int dbIntegrityCheckCb(void *user_data, int argc, char **argv, char **not
        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) {
@@ -66,48 +61,36 @@ sqlite3* dbCreate(std::string path, std::string query)
                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);
@@ -115,7 +98,7 @@ void dbFinalize(sqlite3_stmt *stmt)
        }
 }
 
-void dbClose(sqlite3 *sqlite)
+void closeDB(sqlite3 *sqlite)
 {
        if (sqlite) {
                sqlite3_exec(sqlite, "COMMIT;", NULL, NULL, NULL);
@@ -124,7 +107,7 @@ void dbClose(sqlite3 *sqlite)
        }
 }
 
-void dbRollback(sqlite3 *sqlite)
+void rollbackDB(sqlite3 *sqlite)
 {
        if (sqlite) {
                sqlite3_exec(sqlite, "ROLLBACK;", NULL, NULL, NULL);
@@ -133,84 +116,45 @@ void dbRollback(sqlite3 *sqlite)
        }
 }
 
-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;
 }