092d494408ab0ea66862ccbc186f6278ff22d188
[platform/core/security/vist.git] / src / vist / policy / db-schema.hpp
1 /*
2  *  Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License
15  */
16
17 #pragma once
18
19 #include <vist/query-builder.hpp>
20
21 #include <string>
22
23 using namespace vist::tsqb;
24
25 namespace vist {
26 namespace policy {
27 namespace schema {
28
29 struct Admin {
30         std::string name;
31         int activated = -1;
32
33         inline static Column Name = { "name", &Admin::name };
34         inline static Column Activated = { "activated", &Admin::activated };
35 };
36
37 struct PolicyManaged {
38         std::string admin;
39         std::string policy;
40         std::string value;
41
42         inline static Column Admin = { "admin", &PolicyManaged::admin };
43         inline static Column Policy = { "policy", &PolicyManaged::policy };
44         inline static Column Value = { "value", &PolicyManaged::value };
45 };
46
47 struct PolicyDefinition {
48         std::string name;
49         std::string ivalue;
50
51         inline static Column Name = { "name", &PolicyDefinition::name };
52         inline static Column Ivalue = { "policy", &PolicyDefinition::ivalue };
53 };
54
55 inline Table AdminTable { "ADMIN", Admin::Name, Admin::Activated };
56 inline Table PolicyManagedTable { "POLICY_MANAGED", PolicyManaged::Admin,
57                                                                                                         PolicyManaged::Policy,
58                                                                                                         PolicyManaged::Value };
59 inline Table PolicyDefinitionTable { "POLICY_DEFINITION", PolicyDefinition::Name,
60                                                                                                          PolicyDefinition::Ivalue };
61
62 inline Table admin { "ADMIN", Column("name", &Admin::name),
63                                                           Column("activated", &Admin::activated) };
64
65 inline Table policyManaged { "POLICY_MANAGED", Column("admin", &PolicyManaged::admin),
66                                                                                            Column("policy", &PolicyManaged::policy),
67                                                                                            Column("value", &PolicyManaged::value) };
68
69 inline Table policyDefinition { "POLICY_DEFINITION",
70                                                                 Column("name", &PolicyDefinition::name),
71                                                                 Column("ivalue", &PolicyDefinition::ivalue) };
72
73 } // namespace schema
74 } // namespace policy
75 } // namespace vist