std::string name;
int activated = -1;
- inline static Column Name = { "name", &Admin::name };
- inline static Column Activated = { "activated", &Admin::activated };
+ DECLARE_COLUMN(Name, "name", &Admin::name);
+ DECLARE_COLUMN(Activated, "activated", &Admin::activated);
};
struct PolicyManaged {
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 };
+ DECLARE_COLUMN(Admin, "admin", &PolicyManaged::admin);
+ DECLARE_COLUMN(Policy, "policy", &PolicyManaged::policy);
+ DECLARE_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 };
+ DECLARE_COLUMN(Name, "name", &PolicyDefinition::name);
+ DECLARE_COLUMN(Ivalue, "policy", &PolicyDefinition::ivalue);
};
-inline Table AdminTable { "ADMIN", Admin::Name, Admin::Activated };
-inline Table PolicyManagedTable { "POLICY_MANAGED", PolicyManaged::Admin,
+DECLARE_TABLE(AdminTable, "ADMIN", Admin::Name, Admin::Activated);
+DECLARE_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) };
-
-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) };
+ PolicyManaged::Value);
+DECLARE_TABLE(PolicyDefinitionTable, "POLICY_DEFINITION", PolicyDefinition::Name,
+ PolicyDefinition::Ivalue);
} // namespace schema
} // namespace policy
void PolicyStorage::syncPolicyDefinition()
{
this->definitions.clear();
- std::string query = schema::policyDefinition.selectAll();
+ std::string query = schema::PolicyDefinitionTable.selectAll();
database::Statement stmt(*database, query);
while (stmt.step()) {
void PolicyStorage::syncAdmin()
{
this->admins.clear();
- std::string query = schema::admin.selectAll();
+ std::string query = schema::AdminTable.selectAll();
database::Statement stmt(*database, query);
while (stmt.step()) {
void PolicyStorage::syncPolicyManaged()
{
this->managedPolicies.clear();
- std::string query = schema::policyManaged.selectAll();
+ std::string query = schema::PolicyManagedTable.selectAll();
database::Statement stmt(*database, query);
while (stmt.step()) {
this->admins.erase(name);
}
- std::string query = schema::admin.remove().where(expr(&Admin::name) == name);
+ std::string query = schema::AdminTable.remove().where(expr(&Admin::name) == name);
database::Statement stmt(*database, query);
stmt.bind(1, name);
if (!stmt.exec())
#include "query-builder/condition.hpp"
#include "query-builder/database.hpp"
#include "query-builder/expression.hpp"
+#include "query-builder/macro.hpp"
#include "query-builder/table.hpp"
#include "query-builder/util.hpp"
--- /dev/null
+/*
+ * Copyright (c) 2020-present Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+#pragma once
+
+#include "column.hpp"
+#include "database.hpp"
+#include "table.hpp"
+
+#define DECLARE_COLUMN(instance, name, type) \
+ inline static vist::tsqb::Column instance = { name, type }
+#define DECLARE_TABLE(instance, name, ...) \
+ inline vist::tsqb::Table instance { name, __VA_ARGS__ }
+#define DECLARE_DATABASE(instance, name, ...) \
+ inline vist::tsqb::Database instance { name, __VA_ARGS__ }
std::string column2;
bool column3;
- inline static Column Column1 = { "column1", &Table1::column1 };
- inline static Column Column2 = { "column2", &Table1::column2 };
- inline static Column Column3 = { "column3", &Table1::column3 };
+ DECLARE_COLUMN(Column1, "column1", &Table1::column1);
+ DECLARE_COLUMN(Column2, "column2", &Table1::column2);
+ DECLARE_COLUMN(Column3, "column3", &Table1::column3);
};
struct Table2 {
float column4;
double column5;
- inline static Column Column1 = { "column1", &Table2::column1 };
- inline static Column Column2 = { "column2", &Table2::column2 };
- inline static Column Column3 = { "column3", &Table2::column3 };
- inline static Column Column4 = { "column4", &Table2::column4 };
- inline static Column Column5 = { "column5", &Table2::column5 };
+ DECLARE_COLUMN(Column1, "column1", &Table2::column1);
+ DECLARE_COLUMN(Column2, "column2", &Table2::column2);
+ DECLARE_COLUMN(Column3, "column3", &Table2::column3);
+ DECLARE_COLUMN(Column4, "column4", &Table2::column4);
+ DECLARE_COLUMN(Column5, "column5", &Table2::column5);
};
-inline Table table1 { "table1", Table1::Column1, Table1::Column2, Table1::Column3 };
-inline Table table2 { "table2", Table2::Column1,
+DECLARE_TABLE(table1, "table1", Table1::Column1, Table1::Column2, Table1::Column3);
+DECLARE_TABLE(table2, "table2", Table2::Column1,
Table2::Column2,
Table2::Column3,
Table2::Column4,
- Table2::Column5 };
+ Table2::Column5);
-inline Database database { "database", table1, table2 };
+DECLARE_DATABASE(database, "database", table1, table2);
} // namespace test
} // namespace vist