From 82f07f0bc1001b7faeb8b11ca3ac52ac555136d3 Mon Sep 17 00:00:00 2001 From: Sangwan Kwon Date: Thu, 30 Jan 2020 15:08:12 +0900 Subject: [PATCH] Apply latest query-builder to policy-storage Signed-off-by: Sangwan Kwon --- src/vist/policy/db-schema.hpp | 15 +++++++++++++++ src/vist/policy/policy-storage.cpp | 37 ++++++++++++------------------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/vist/policy/db-schema.hpp b/src/vist/policy/db-schema.hpp index 77fa84d..5482504 100644 --- a/src/vist/policy/db-schema.hpp +++ b/src/vist/policy/db-schema.hpp @@ -16,8 +16,12 @@ #pragma once +#include + #include +using namespace vist::tsqb; + namespace vist { namespace policy { namespace schema { @@ -38,6 +42,17 @@ struct PolicyDefinition { std::string ivalue; }; +inline Table admin { "ADMIN", Column("name", &Admin::name), + Column("activated", &Admin::activated) }; + +inline Table policyManaged { "POLICY_MANAGED", Column("admin", &PolicyManaged::admin), + Column("policy", &PolicyManaged::policy), + Column("value", &PolicyManaged::value) }; + +inline Table policyDefinition { "POLICY_DEFINITION", + Column("name", &PolicyDefinition::name), + Column("ivalue", &PolicyDefinition::ivalue) }; + } // namespace schema } // namespace policy } // namespace vist diff --git a/src/vist/policy/policy-storage.cpp b/src/vist/policy/policy-storage.cpp index 081385e..430d180 100644 --- a/src/vist/policy/policy-storage.cpp +++ b/src/vist/policy/policy-storage.cpp @@ -25,21 +25,8 @@ #include #include -using namespace vist::tsqb; -using namespace vist::policy::schema; - namespace { -Table adminTable { "ADMIN", Column("name", &Admin::name), - Column("activated", &Admin::activated) }; - -Table polManagedTable { "POLICY_MANAGED", Column("admin", &PolicyManaged::admin), - Column("policy", &PolicyManaged::policy), - Column("value", &PolicyManaged::value) }; - -Table polDefinitionTable { "POLICY_DEFINITION", Column("name", &PolicyDefinition::name), - Column("ivalue", &PolicyDefinition::ivalue) }; - const std::string SCRIPT_BASE = SCRIPT_INSTALL_DIR; const std::string SCRIPT_CREATE_SCHEMA = "create-schema"; @@ -70,7 +57,7 @@ void PolicyStorage::sync() void PolicyStorage::syncPolicyDefinition() { this->definitions.clear(); - std::string query = polDefinitionTable.selectAll(); + std::string query = schema::policyDefinition.selectAll(); database::Statement stmt(*database, query); while (stmt.step()) { @@ -85,7 +72,7 @@ void PolicyStorage::syncPolicyDefinition() void PolicyStorage::syncAdmin() { this->admins.clear(); - std::string query = adminTable.selectAll(); + std::string query = schema::admin.selectAll(); database::Statement stmt(*database, query); while (stmt.step()) { @@ -99,7 +86,7 @@ void PolicyStorage::syncAdmin() void PolicyStorage::syncPolicyManaged() { this->managedPolicies.clear(); - std::string query = polManagedTable.selectAll(); + std::string query = schema::policyManaged.selectAll(); database::Statement stmt(*database, query); while (stmt.step()) { @@ -137,8 +124,8 @@ void PolicyStorage::define(const std::string& policy, const PolicyValue& ivalue) PolicyDefinition pd = { policy, ivalue.dump() }; - std::string query = polDefinitionTable.insert(&PolicyDefinition::name, - &PolicyDefinition::ivalue); + std::string query = schema::policyDefinition.insert(&PolicyDefinition::name, + &PolicyDefinition::ivalue); database::Statement stmt(*database, query); stmt.bind(1, pd.name); stmt.bind(2, pd.ivalue); @@ -160,7 +147,7 @@ void PolicyStorage::enroll(const std::string& name) /// Make admin deactivated as default. Admin admin = {name , 0}; - std::string query = adminTable.insert(&Admin::name, &Admin::activated); + std::string query = schema::admin.insert(&Admin::name, &Admin::activated); database::Statement stmt(*database, query); stmt.bind(1, admin.name); stmt.bind(2, admin.activated); @@ -190,7 +177,7 @@ void PolicyStorage::disenroll(const std::string& name) this->admins.erase(name); } - std::string query = adminTable.remove().where(expr(&Admin::name) == name); + std::string query = schema::admin.remove().where(expr(&Admin::name) == name); database::Statement stmt(*database, query); stmt.bind(1, name); if (!stmt.exec()) @@ -206,8 +193,8 @@ void PolicyStorage::activate(const std::string& admin, bool state) THROW(ErrCode::LogicError) << "Not exist admin: " << admin; DEBUG(VIST) << "Activate admin: " << admin; - std::string query = adminTable.update(&Admin::activated) - .where(expr(&Admin::name) == admin); + std::string query = schema::admin.update(&Admin::activated) + .where(expr(&Admin::name) == admin); database::Statement stmt(*this->database, query); stmt.bind(1, static_cast(state)); stmt.bind(2, admin); @@ -248,9 +235,9 @@ void PolicyStorage::update(const std::string& admin, if (this->definitions.find(policy) == this->definitions.end()) THROW(ErrCode::LogicError) << "Not exist policy: " << policy; - std::string query = polManagedTable.update(&PolicyManaged::value) - .where(expr(&PolicyManaged::admin) == admin && - expr(&PolicyManaged::policy) == policy); + std::string query = schema::policyManaged.update(&PolicyManaged::value) + .where(expr(&PolicyManaged::admin) == admin && + expr(&PolicyManaged::policy) == policy); database::Statement stmt(*this->database, query); stmt.bind(1, value.dump()); stmt.bind(2, admin); -- 2.7.4