summary refs log tree commit diff stats
path: root/lib/group.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/group.cpp')
-rw-r--r--lib/group.cpp61
1 files changed, 0 insertions, 61 deletions
diff --git a/lib/group.cpp b/lib/group.cpp deleted file mode 100644 index d5790e9..0000000 --- a/lib/group.cpp +++ /dev/null
@@ -1,61 +0,0 @@
1#include "group.h"
2#include <sqlite3.h>
3#include <json.hpp>
4#include "database.h"
5#include "query.h"
6
7namespace verbly {
8
9 const object group::objectType = object::group;
10
11 const std::list<std::string> group::select = {"group_id", "data"};
12
13 const field group::id = field::integerField(object::group, "group_id");
14
15 const field group::frame = field::joinThrough(object::group, "group_id", object::frame, "groups_frames", "frame_id");
16 const field group::word = field::joinField(object::group, "group_id", object::word);
17
18 group::group(const database& db, sqlite3_stmt* row) : db_(&db), valid_(true)
19 {
20 id_ = sqlite3_column_int(row, 0);
21
22 std::string rolesJsonStr(reinterpret_cast<const char*>(sqlite3_column_blob(row, 1)));
23 nlohmann::json rolesJson = nlohmann::json::parse(std::move(rolesJsonStr));
24 for (const nlohmann::json& roleJson : rolesJson)
25 {
26 std::string roleName = roleJson["type"];
27 selrestr roleSelrestr;
28
29 if (roleJson.find("selrestrs") != roleJson.end())
30 {
31 roleSelrestr = selrestr(roleJson["selrestrs"]);
32 }
33
34 roles_[roleName] = role(roleName, std::move(roleSelrestr));
35 }
36 }
37
38 const std::vector<frame>& group::getFrames() const
39 {
40 if (!valid_)
41 {
42 throw std::domain_error("Bad access to uninitialized group");
43 }
44
45 if (!initializedFrames_)
46 {
47 frames_ = db_->frames(frame::group %= *this, false, -1).all();
48
49 initializedFrames_ = true;
50 }
51
52 return frames_;
53 }
54
55 const role& group::getRole(std::string roleName) const
56 {
57 return roles_.at(roleName);
58 }
59
60};
61