diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2017-01-24 21:50:39 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2017-01-24 21:50:39 -0500 |
commit | e1fa4a088dd95caef22045f905a9d5d22b71bef0 (patch) | |
tree | 09f30eadcbb5a7352f19a6070dc363298f16aff8 /lib/query.h | |
parent | 0ba0fff06fb679f5cabedd52257fc0c38a600279 (diff) | |
download | verbly-e1fa4a088dd95caef22045f905a9d5d22b71bef0.tar.gz verbly-e1fa4a088dd95caef22045f905a9d5d22b71bef0.tar.bz2 verbly-e1fa4a088dd95caef22045f905a9d5d22b71bef0.zip |
Whitespace changes
Diffstat (limited to 'lib/query.h')
-rw-r--r-- | lib/query.h | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/lib/query.h b/lib/query.h index e31be3d..352748f 100644 --- a/lib/query.h +++ b/lib/query.h | |||
@@ -11,36 +11,36 @@ | |||
11 | #include "binding.h" | 11 | #include "binding.h" |
12 | 12 | ||
13 | namespace verbly { | 13 | namespace verbly { |
14 | 14 | ||
15 | class database_error : public std::logic_error { | 15 | class database_error : public std::logic_error { |
16 | public: | 16 | public: |
17 | 17 | ||
18 | database_error(std::string msg, std::string sqlMsg) : std::logic_error(msg + " (" + sqlMsg + ")") | 18 | database_error(std::string msg, std::string sqlMsg) : std::logic_error(msg + " (" + sqlMsg + ")") |
19 | { | 19 | { |
20 | } | 20 | } |
21 | }; | 21 | }; |
22 | 22 | ||
23 | template <typename Object> | 23 | template <typename Object> |
24 | class query { | 24 | class query { |
25 | public: | 25 | public: |
26 | 26 | ||
27 | query(const database& db, sqlite3* ppdb, filter queryFilter, bool random, int limit) : db_(&db) | 27 | query(const database& db, sqlite3* ppdb, filter queryFilter, bool random, int limit) : db_(&db) |
28 | { | 28 | { |
29 | statement stmt(Object::objectType, std::move(queryFilter)); | 29 | statement stmt(Object::objectType, std::move(queryFilter)); |
30 | 30 | ||
31 | std::string queryString = stmt.getQueryString(Object::select, random, limit); | 31 | std::string queryString = stmt.getQueryString(Object::select, random, limit); |
32 | std::list<binding> bindings = stmt.getBindings(); | 32 | std::list<binding> bindings = stmt.getBindings(); |
33 | 33 | ||
34 | std::cout << queryString << std::endl; | 34 | std::cout << queryString << std::endl; |
35 | 35 | ||
36 | if (sqlite3_prepare_v2(ppdb, queryString.c_str(), queryString.length(), &ppstmt_, NULL) != SQLITE_OK) | 36 | if (sqlite3_prepare_v2(ppdb, queryString.c_str(), queryString.length(), &ppstmt_, NULL) != SQLITE_OK) |
37 | { | 37 | { |
38 | std::string errorMsg = sqlite3_errmsg(ppdb); | 38 | std::string errorMsg = sqlite3_errmsg(ppdb); |
39 | sqlite3_finalize(ppstmt_); | 39 | sqlite3_finalize(ppstmt_); |
40 | 40 | ||
41 | throw database_error("Error preparing query", errorMsg); | 41 | throw database_error("Error preparing query", errorMsg); |
42 | } | 42 | } |
43 | 43 | ||
44 | int i = 1; | 44 | int i = 1; |
45 | for (const binding& value : bindings) | 45 | for (const binding& value : bindings) |
46 | { | 46 | { |
@@ -52,52 +52,52 @@ namespace verbly { | |||
52 | { | 52 | { |
53 | std::string errorMsg = sqlite3_errmsg(ppdb); | 53 | std::string errorMsg = sqlite3_errmsg(ppdb); |
54 | sqlite3_finalize(ppstmt_); | 54 | sqlite3_finalize(ppstmt_); |
55 | 55 | ||
56 | throw database_error("Error binding value to query", errorMsg); | 56 | throw database_error("Error binding value to query", errorMsg); |
57 | } | 57 | } |
58 | 58 | ||
59 | break; | 59 | break; |
60 | } | 60 | } |
61 | 61 | ||
62 | case binding::type::string: | 62 | case binding::type::string: |
63 | { | 63 | { |
64 | if (sqlite3_bind_text(ppstmt_, i, value.getString().c_str(), value.getString().length(), SQLITE_TRANSIENT) != SQLITE_OK) | 64 | if (sqlite3_bind_text(ppstmt_, i, value.getString().c_str(), value.getString().length(), SQLITE_TRANSIENT) != SQLITE_OK) |
65 | { | 65 | { |
66 | std::string errorMsg = sqlite3_errmsg(ppdb); | 66 | std::string errorMsg = sqlite3_errmsg(ppdb); |
67 | sqlite3_finalize(ppstmt_); | 67 | sqlite3_finalize(ppstmt_); |
68 | 68 | ||
69 | throw database_error("Error binding value to query", errorMsg); | 69 | throw database_error("Error binding value to query", errorMsg); |
70 | } | 70 | } |
71 | 71 | ||
72 | break; | 72 | break; |
73 | } | 73 | } |
74 | 74 | ||
75 | case binding::type::invalid: | 75 | case binding::type::invalid: |
76 | { | 76 | { |
77 | throw std::logic_error("Cannot use invalid bindings"); | 77 | throw std::logic_error("Cannot use invalid bindings"); |
78 | } | 78 | } |
79 | } | 79 | } |
80 | 80 | ||
81 | i++; | 81 | i++; |
82 | } | 82 | } |
83 | } | 83 | } |
84 | 84 | ||
85 | ~query() | 85 | ~query() |
86 | { | 86 | { |
87 | sqlite3_finalize(ppstmt_); | 87 | sqlite3_finalize(ppstmt_); |
88 | } | 88 | } |
89 | 89 | ||
90 | std::vector<Object> all() const | 90 | std::vector<Object> all() const |
91 | { | 91 | { |
92 | std::vector<Object> result; | 92 | std::vector<Object> result; |
93 | 93 | ||
94 | while (sqlite3_step(ppstmt_) == SQLITE_ROW) | 94 | while (sqlite3_step(ppstmt_) == SQLITE_ROW) |
95 | { | 95 | { |
96 | result.emplace_back(*db_, ppstmt_); | 96 | result.emplace_back(*db_, ppstmt_); |
97 | } | 97 | } |
98 | 98 | ||
99 | sqlite3_reset(ppstmt_); | 99 | sqlite3_reset(ppstmt_); |
100 | 100 | ||
101 | return result; | 101 | return result; |
102 | } | 102 | } |
103 | 103 | ||
@@ -111,13 +111,13 @@ namespace verbly { | |||
111 | throw std::logic_error("query returned empty dataset"); | 111 | throw std::logic_error("query returned empty dataset"); |
112 | } | 112 | } |
113 | } | 113 | } |
114 | 114 | ||
115 | private: | 115 | private: |
116 | const database* db_; | 116 | const database* db_; |
117 | sqlite3_stmt* ppstmt_; | 117 | sqlite3_stmt* ppstmt_; |
118 | 118 | ||
119 | }; | 119 | }; |
120 | 120 | ||
121 | }; | 121 | }; |
122 | 122 | ||
123 | #endif /* end of include guard: QUERY_H_7CC5284C */ | 123 | #endif /* end of include guard: QUERY_H_7CC5284C */ |