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()));