struct Admin {
std::string name;
int activated = -1;
+
+ inline static Column Name = { "name", &Admin::name };
+ inline static Column Activated = { "activated", &Admin::activated };
};
struct PolicyManaged {
std::string admin;
std::string policy;
std::string value;
+
+ inline static Column Admin = { "admin", &PolicyManaged::admin };
+ inline static Column Policy = { "policy", &PolicyManaged::policy };
+ inline static Column Value = { "value", &PolicyManaged::value };
};
struct PolicyDefinition {
std::string name;
std::string ivalue;
+
+ inline static Column Name = { "name", &PolicyDefinition::name };
+ inline static Column Ivalue = { "policy", &PolicyDefinition::ivalue };
};
+inline Table AdminTable { "ADMIN", Admin::Name, Admin::Activated };
+inline Table PolicyManagedTable { "POLICY_MANAGED", PolicyManaged::Admin,
+ PolicyManaged::Policy,
+ PolicyManaged::Value };
+inline Table PolicyDefinitionTable { "POLICY_DEFINITION", PolicyDefinition::Name,
+ PolicyDefinition::Ivalue };
+
inline Table admin { "ADMIN", Column("name", &Admin::name),
Column("activated", &Admin::activated) };
THROW(ErrCode::LogicError) << "Not exist admin: " << admin;
DEBUG(VIST) << "Activate admin: " << admin;
- std::string query = schema::admin.update(&Admin::activated)
- .where(expr(&Admin::name) == admin);
+ /// Admin::Activated
+ std::string query = schema::AdminTable.update(Admin::Activated)
+ .where(expr(&Admin::name) == admin);
database::Statement stmt(*this->database, query);
stmt.bind(1, static_cast<int>(state));
stmt.bind(2, admin);
if (this->definitions.find(policy) == this->definitions.end())
THROW(ErrCode::LogicError) << "Not exist policy: " << policy;
- std::string query = schema::policyManaged.update(&PolicyManaged::value)
- .where(expr(&PolicyManaged::admin) == admin &&
+ std::string query = schema::PolicyManagedTable.update(PolicyManaged::Value)
+ .where(expr(&PolicyManaged::admin) == admin &&
expr(&PolicyManaged::policy) == policy);
database::Statement stmt(*this->database, query);
stmt.bind(1, value.dump());
{
static_cast<T*>(this)->cache.clear();
- auto columnNames = static_cast<T*>(this)->getColumnNames(std::forward<ColumnTypes>(cts)...);
+ auto columnNames = static_cast<T*>(this)->_getColumnNames(std::forward<ColumnTypes>(cts)...);
std::stringstream ss;
ss << "UPDATE " << static_cast<T*>(this)->name << " ";
TEST(QueryBuilderTsqbTests, UPDATE)
{
int uid = 0, id = 1;
- std::string update1 = admin.update(&Admin::id, &Admin::pkg, &Admin::uid, &Admin::key);
- std::string update2 = admin.update(&Admin::key).where(expr(&Admin::uid) == uid &&
+ std::string update1 = admin.update(Admin::Id, Admin::Pkg, Admin::Uid, Admin::Key);
+ std::string update2 = admin.update(Admin::Key).where(expr(&Admin::uid) == uid &&
expr(&Admin::id) == id);
- std::string update3 = admin.update(&Admin::key, &Admin::pkg)
+ std::string update3 = admin.update(Admin::Key, Admin::Pkg)
.where(expr(&Admin::uid) == 0 && expr(&Admin::id) == 1);
EXPECT_EQ(update1, "UPDATE admin SET id = ?, pkg = ?, uid = ?, key = ?");