Fix DbManager class
authorSangyoon Jang <jeremy.jang@samsung.com>
Mon, 11 May 2020 07:48:51 +0000 (16:48 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 25 May 2020 04:28:15 +0000 (13:28 +0900)
- Fix error of select query string.
- Make connection as shared_ptr to using shared_from_this().
- Initialize table at constructor.

Change-Id: I9024dca65f0d4984a1c53faaa07e03c8cc6a36f9
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/theme_provider/db_manager.cc
src/theme_provider/db_manager.h

index 4ee1efd..0d56b97 100644 (file)
@@ -37,7 +37,7 @@ const char kDeleteQuery[] =
     "DELETE FROM theme WHERE id = ?";
 const char kSelectQuery[] =
     "SELECT id, version, tool_version, title, description, preview, resolution,"
-    "  details WHERE id = ?";
+    "  details FROM theme WHERE id = ?";
 const char kCreateThemeSettingTableQuery[] =
     "CREATE TABLE IF NOT EXISTS theme_setting (\n"
     "  current TEXT,\n"
@@ -50,14 +50,19 @@ const char kSetThemeQuery[] =
 namespace ttm {
 namespace provider {
 
-DbManager::DbManager(const std::string& db_path) : conn_(db_path, true) {
+DbManager::DbManager(const std::string& db_path) {
+  conn_ = std::make_shared<SQLiteConnection>(db_path, false);
+  if (!conn_->Execute(kCreateThemeTableQuery))
+    LOG(ERROR) << "Failed to create theme table";
+  if (!conn_->Execute(kCreateThemeSettingTableQuery))
+    LOG(ERROR) << "Failed to create theme_setting table";
 }
 
 DbManager::~DbManager() {
 }
 
 bool DbManager::Insert(const std::string& id, const tizen_base::Bundle& info) {
-  std::unique_ptr<SQLiteStatement> stmt = conn_.PrepareStatement(kInsertQuery);
+  std::unique_ptr<SQLiteStatement> stmt = conn_->PrepareStatement(kInsertQuery);
   if (!stmt) {
     LOG(ERROR) << "Failed to prepare statement";
     return false;
@@ -90,7 +95,7 @@ bool DbManager::Insert(const std::string& id, const tizen_base::Bundle& info) {
 }
 
 bool DbManager::Update(const std::string& id, const tizen_base::Bundle& info) {
-  std::unique_ptr<SQLiteStatement> stmt = conn_.PrepareStatement(kUpdateQuery);
+  std::unique_ptr<SQLiteStatement> stmt = conn_->PrepareStatement(kUpdateQuery);
   if (!stmt) {
     LOG(ERROR) << "Failed to prepare statement";
     return false;
@@ -126,7 +131,7 @@ bool DbManager::Update(const std::string& id, const tizen_base::Bundle& info) {
 }
 
 bool DbManager::Delete(const std::string& id) {
-  std::unique_ptr<SQLiteStatement> stmt = conn_.PrepareStatement(kDeleteQuery);
+  std::unique_ptr<SQLiteStatement> stmt = conn_->PrepareStatement(kDeleteQuery);
   if (!stmt) {
     LOG(ERROR) << "Failed to prepare statement";
     return false;
@@ -144,7 +149,7 @@ bool DbManager::Delete(const std::string& id) {
 }
 
 tizen_base::Bundle DbManager::Select(const std::string& id) {
-  std::unique_ptr<SQLiteStatement> stmt = conn_.PrepareStatement(kSelectQuery);
+  std::unique_ptr<SQLiteStatement> stmt = conn_->PrepareStatement(kSelectQuery);
   if (!stmt) {
     LOG(ERROR) << "Failed to prepare statement";
     return {};
@@ -174,7 +179,7 @@ tizen_base::Bundle DbManager::Select(const std::string& id) {
 
 bool DbManager::UpdateCurrentId(const std::string& id) {
   std::unique_ptr<SQLiteStatement> stmt =
-      conn_.PrepareStatement(kSetThemeQuery);
+      conn_->PrepareStatement(kSetThemeQuery);
   if (!stmt) {
     LOG(ERROR) << "Failed to prepare statement";
     return false;
index 05286f8..5e2495f 100644 (file)
@@ -34,7 +34,7 @@ class DbManager {
   void AddPackageEventListener(std::shared_ptr<IThemePackageEvent> listener);
 
  private:
-  SQLiteConnection conn_;
+  std::shared_ptr<SQLiteConnection> conn_;
   std::vector<std::shared_ptr<IThemePackageEvent>> listeners_;
 };