From 38ca316c33c8892257d170698fac036097bdc7a4 Mon Sep 17 00:00:00 2001 From: "jh9216.park" Date: Mon, 21 Nov 2022 21:39:22 -0500 Subject: [PATCH] Use new database.hpp - We don't need dbtype_cast<> any more because it provides type conversion operators Change-Id: Id8d0c86216f40716613cf94934c7c197d8fed44e Signed-off-by: jh9216.park --- src/modules/cion/cion_module.cc | 23 +++++++++------------- src/modules/cion/database.hpp | 43 ++++++++++++++++++++++++++++++----------- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/src/modules/cion/cion_module.cc b/src/modules/cion/cion_module.cc index 42b4cf9..de10eec 100644 --- a/src/modules/cion/cion_module.cc +++ b/src/modules/cion/cion_module.cc @@ -29,7 +29,6 @@ namespace esd::module { using tizen_base::_; -using tizen_base::dbtype_cast; namespace { @@ -72,8 +71,8 @@ bool IsTableExist(const tizen_base::Database& db) { return false; for (const auto& i : r) { - auto [table_name] = i.Get<_>(); - if (dbtype_cast(table_name) == "cion") + std::string table_name = i.Get(0); + if (table_name == "cion") return true; } @@ -230,8 +229,7 @@ bool CionModule::GetUuidFromDb(const tizen_base::Database& db, return false; for (const auto& i : r) { - auto [uuid_rec] = i.Get<_>(); - uuid = dbtype_cast(uuid_rec); + uuid = static_cast(i.Get(0)); return true; } @@ -320,8 +318,7 @@ void CionModule::GetDisplayName(const std::string& appid, return; for (const auto& i : r) { - auto [display_name_rec] = i.Get<_>(); - display_name = dbtype_cast(display_name_rec); + display_name = static_cast(i.Get(0)); ret = 0; break; } @@ -358,8 +355,7 @@ void CionModule::SetEnabled(const std::string& appid, const std::string& service return; for (const auto& i : r2) { - auto [display_name_rec] = i.Get<_>(); - std::string display_name = dbtype_cast(display_name_rec); + std::string display_name = i.Get(0); if (enabled) AddEnabledApp(service_name, appid, display_name); else @@ -389,8 +385,7 @@ void CionModule::GetEnabled(const std::string& appid, const std::string& service return; for (const auto& i : r) { - auto [enabled_rec] = i.Get<_>(); - enabled = (bool)dbtype_cast(enabled_rec); + enabled = static_cast(static_cast(i.Get(0))); ret = 0; break; } @@ -414,9 +409,9 @@ std::optional> CionModule::GetEnabledServiceList() { for (const auto& i : r) { auto [service_name, appid, display_name] = i.Get<_, _, _>(); info_list.push_back( - CionServiceInfo(dbtype_cast(service_name), - dbtype_cast(appid), - dbtype_cast(display_name))); + CionServiceInfo(static_cast(service_name), + static_cast(appid), + static_cast(display_name))); } return info_list; diff --git a/src/modules/cion/database.hpp b/src/modules/cion/database.hpp index a31a90e..a2d8fca 100644 --- a/src/modules/cion/database.hpp +++ b/src/modules/cion/database.hpp @@ -29,15 +29,6 @@ namespace tizen_base { -using DbType = std::variant>; -using _ = DbType; - -template -T dbtype_cast(DbType v) { - return std::get(v); -} - template struct num { static const constexpr auto value = N; @@ -53,6 +44,36 @@ void for_(F func) { for_(func, std::make_index_sequence()); } +using DbType = std::variant>; + +class AutoDbType { + public: + AutoDbType() = default; + AutoDbType(DbType db_type) : db_type_(db_type) {} + + operator int () { + return std::get(db_type_); + } + + operator std::string () { + return std::get(db_type_); + } + + operator double () { + return std::get(db_type_); + } + + operator std::vector () { + return std::get>(db_type_); + } + + private: + DbType db_type_; +}; + +using _ = AutoDbType; + class Database { public: class TransactionGuard { @@ -219,7 +240,7 @@ class Database { public: Record(const sqlite3_stmt* stmt) : stmt_(stmt) {} - DbType Get(int pos) const { + AutoDbType Get(int pos) const { sqlite3_stmt* stmt = const_cast(stmt_); int type = sqlite3_column_type(stmt, pos); if (type == SQLITE_NULL) @@ -247,7 +268,7 @@ class Database { throw std::runtime_error("invalid column type"); } - return dbt; + return AutoDbType(dbt); } template -- 2.7.4