Mercurial > malikania
comparison database/sqlite/src/account.cpp @ 40:1e206fdc7021
Server: switch to Boost.DLL, closes #583
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 27 Nov 2016 20:00:13 +0100 |
parents | 56ab2f0c90dc |
children | a47a4477f347 |
comparison
equal
deleted
inserted
replaced
39:56ab2f0c90dc | 40:1e206fdc7021 |
---|---|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 */ | 17 */ |
18 | 18 |
19 #include <boost/dll.hpp> | |
20 | |
19 #include <vector> | 21 #include <vector> |
20 | 22 |
21 #include <malikania/account.hpp> | 23 #include <malikania/account.hpp> |
22 #include <malikania/dynlib.hpp> | |
23 | 24 |
24 #include "driver.hpp" | 25 #include "driver.hpp" |
25 | 26 |
26 using namespace malikania; | 27 using namespace malikania; |
27 | 28 |
84 | 85 |
85 #include <iostream> | 86 #include <iostream> |
86 | 87 |
87 extern "C" { | 88 extern "C" { |
88 | 89 |
89 DYNLIB_EXPORT void malikania_account_create(Account& account) | 90 BOOST_SYMBOL_EXPORT void malikania_account_create(Account& account) |
90 { | 91 { |
91 auto stmt = sqlite::prepare(create_query); | 92 auto stmt = sqlite::prepare(create_query); |
92 | 93 |
93 sqlite3_bind_text(stmt.get(), 1, account.name().c_str(), -1, nullptr); | 94 sqlite3_bind_text(stmt.get(), 1, account.name().c_str(), -1, nullptr); |
94 sqlite3_bind_text(stmt.get(), 2, account.email().c_str(), -1, nullptr); | 95 sqlite3_bind_text(stmt.get(), 2, account.email().c_str(), -1, nullptr); |
101 } | 102 } |
102 | 103 |
103 account.setId(sqlite3_last_insert_rowid(sqlite::database.get())); | 104 account.setId(sqlite3_last_insert_rowid(sqlite::database.get())); |
104 } | 105 } |
105 | 106 |
106 DYNLIB_EXPORT void malikania_account_update(Account& account) | 107 BOOST_SYMBOL_EXPORT void malikania_account_update(Account& account) |
107 { | 108 { |
108 auto stmt = sqlite::prepare(update_query); | 109 auto stmt = sqlite::prepare(update_query); |
109 | 110 |
110 sqlite3_bind_text(stmt.get(), 1, account.name().c_str(), -1, nullptr); | 111 sqlite3_bind_text(stmt.get(), 1, account.name().c_str(), -1, nullptr); |
111 sqlite3_bind_text(stmt.get(), 2, account.email().c_str(), -1, nullptr); | 112 sqlite3_bind_text(stmt.get(), 2, account.email().c_str(), -1, nullptr); |
117 if (sqlite3_step(stmt.get()) != SQLITE_DONE) { | 118 if (sqlite3_step(stmt.get()) != SQLITE_DONE) { |
118 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); | 119 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); |
119 } | 120 } |
120 } | 121 } |
121 | 122 |
122 DYNLIB_EXPORT void malikania_account_remove(const Account& account) | 123 BOOST_SYMBOL_EXPORT void malikania_account_remove(const Account& account) |
123 { | 124 { |
124 auto stmt = sqlite::prepare(delete_query); | 125 auto stmt = sqlite::prepare(delete_query); |
125 | 126 |
126 sqlite3_bind_int64(stmt.get(), 1, account.id()); | 127 sqlite3_bind_int64(stmt.get(), 1, account.id()); |
127 | 128 |
128 if (sqlite3_step(stmt.get()) != SQLITE_OK) { | 129 if (sqlite3_step(stmt.get()) != SQLITE_OK) { |
129 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); | 130 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); |
130 } | 131 } |
131 } | 132 } |
132 | 133 |
133 DYNLIB_EXPORT Account malikania_account_get(std::uint64_t id) | 134 BOOST_SYMBOL_EXPORT Account malikania_account_get(std::uint64_t id) |
134 { | 135 { |
135 auto stmt = sqlite::prepare(get_query); | 136 auto stmt = sqlite::prepare(get_query); |
136 | 137 |
137 sqlite3_bind_int64(stmt.get(), 1, id); | 138 sqlite3_bind_int64(stmt.get(), 1, id); |
138 | 139 |
141 } | 142 } |
142 | 143 |
143 return to_account(stmt); | 144 return to_account(stmt); |
144 } | 145 } |
145 | 146 |
146 DYNLIB_EXPORT std::vector<Account> malikania_account_list() | 147 BOOST_SYMBOL_EXPORT std::vector<Account> malikania_account_list() |
147 { | 148 { |
148 auto stmt = sqlite::prepare(list_query); | 149 auto stmt = sqlite::prepare(list_query); |
149 | 150 |
150 std::vector<Account> list; | 151 std::vector<Account> list; |
151 | 152 |
154 } | 155 } |
155 | 156 |
156 return list; | 157 return list; |
157 } | 158 } |
158 | 159 |
159 DYNLIB_EXPORT void malikania_account_clear() | 160 BOOST_SYMBOL_EXPORT void malikania_account_clear() |
160 { | 161 { |
161 if (sqlite3_exec(sqlite::database.get(), clear_query.c_str(), nullptr, nullptr, nullptr) != SQLITE_OK) { | 162 if (sqlite3_exec(sqlite::database.get(), clear_query.c_str(), nullptr, nullptr, nullptr) != SQLITE_OK) { |
162 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); | 163 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); |
163 } | 164 } |
164 } | 165 } |
165 | 166 |
166 DYNLIB_EXPORT std::uint64_t malikania_account_count() | 167 BOOST_SYMBOL_EXPORT std::uint64_t malikania_account_count() |
167 { | 168 { |
168 auto stmt = sqlite::prepare(count_query); | 169 auto stmt = sqlite::prepare(count_query); |
169 | 170 |
170 if (sqlite3_step(stmt.get()) != SQLITE_ROW) { | 171 if (sqlite3_step(stmt.get()) != SQLITE_ROW) { |
171 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); | 172 throw std::runtime_error(sqlite3_errmsg(sqlite::database.get())); |