18
18
*/
19
19
#include " tidesdb.hpp"
20
20
21
- #define ERR_HANDLER () \
22
- if (err) \
23
- { \
24
- std::cout << err->message << std::endl; \
25
- int err_code = err->code ; \
26
- tidesdb_err_free (err); \
27
- return err_code; \
28
- } \
29
- return 0 ;
30
-
31
21
namespace TidesDB
32
22
{
33
23
@@ -39,13 +29,27 @@ DB::DB(void)
39
29
int DB::Open (const std::string &dir_name)
40
30
{
41
31
tidesdb_err_t *err = tidesdb_open (dir_name.c_str (), &this ->tdb );
42
- ERR_HANDLER ()
32
+ if (err)
33
+ {
34
+ std::string error_message = err->message ;
35
+ int error_code = err->code ;
36
+ tidesdb_err_free (err);
37
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
38
+ }
39
+ return 0 ;
43
40
}
44
41
45
42
int DB::Close () const
46
43
{
47
44
tidesdb_err_t *err = tidesdb_close (this ->tdb );
48
- ERR_HANDLER ()
45
+ if (err)
46
+ {
47
+ std::string error_message = err->message ;
48
+ int error_code = err->code ;
49
+ tidesdb_err_free (err);
50
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
51
+ }
52
+ return 0 ;
49
53
}
50
54
51
55
int DB::CreateColumnFamily (const std::string &column_family_name, int flush_threshold,
@@ -56,13 +60,27 @@ int DB::CreateColumnFamily(const std::string &column_family_name, int flush_thre
56
60
tidesdb_err_t *err = tidesdb_create_column_family (
57
61
this ->tdb , column_family_name.c_str (), flush_threshold, max_level, probability, compressed,
58
62
compress_algo, bloom_filter, memtable_ds);
59
- ERR_HANDLER ()
63
+ if (err)
64
+ {
65
+ std::string error_message = err->message ;
66
+ int error_code = err->code ;
67
+ tidesdb_err_free (err);
68
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
69
+ }
70
+ return 0 ;
60
71
}
61
72
62
73
int DB::DropColumnFamily (const std::string &column_family_name) const
63
74
{
64
75
tidesdb_err_t *err = tidesdb_drop_column_family (this ->tdb , column_family_name.c_str ());
65
- ERR_HANDLER ()
76
+ if (err)
77
+ {
78
+ std::string error_message = err->message ;
79
+ int error_code = err->code ;
80
+ tidesdb_err_free (err);
81
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
82
+ }
83
+ return 0 ;
66
84
}
67
85
68
86
int DB::Put (const std::string &column_family_name, const std::vector<uint8_t > *key,
@@ -73,7 +91,14 @@ int DB::Put(const std::string &column_family_name, const std::vector<uint8_t> *k
73
91
time_t ttl_time = ttl.count ();
74
92
tidesdb_err_t *err = tidesdb_put (this ->tdb , column_family_name.c_str (), key->data (), key_size,
75
93
value->data (), value_size, ttl_time);
76
- ERR_HANDLER ()
94
+ if (err)
95
+ {
96
+ std::string error_message = err->message ;
97
+ int error_code = err->code ;
98
+ tidesdb_err_free (err);
99
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
100
+ }
101
+ return 0 ;
77
102
}
78
103
79
104
int DB::Get (const std::string &column_family_name, const std::vector<uint8_t > *key,
@@ -89,22 +114,43 @@ int DB::Get(const std::string &column_family_name, const std::vector<uint8_t> *k
89
114
value->assign (value_data, value_data + value_size);
90
115
free (value_data);
91
116
}
92
- ERR_HANDLER ()
117
+ if (err)
118
+ {
119
+ std::string error_message = err->message ;
120
+ int error_code = err->code ;
121
+ tidesdb_err_free (err);
122
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
123
+ }
124
+ return 0 ;
93
125
}
94
126
95
127
int DB::Delete (const std::string &column_family_name, const std::vector<uint8_t > *key) const
96
128
{
97
129
size_t key_size = key->size ();
98
130
tidesdb_err_t *err =
99
131
tidesdb_delete (this ->tdb , column_family_name.c_str (), key->data (), key_size);
100
- ERR_HANDLER ()
132
+ if (err)
133
+ {
134
+ std::string error_message = err->message ;
135
+ int error_code = err->code ;
136
+ tidesdb_err_free (err);
137
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
138
+ }
139
+ return 0 ;
101
140
}
102
141
103
142
int DB::CompactSSTables (const std::string &column_family_name, int max_threads) const
104
143
{
105
144
tidesdb_err_t *err =
106
145
tidesdb_compact_sstables (this ->tdb , column_family_name.c_str (), max_threads);
107
- ERR_HANDLER ()
146
+ if (err)
147
+ {
148
+ std::string error_message = err->message ;
149
+ int error_code = err->code ;
150
+ tidesdb_err_free (err);
151
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
152
+ }
153
+ return 0 ;
108
154
}
109
155
110
156
int DB::StartBackgroundPartialMerges (const std::string &column_family_name,
@@ -118,7 +164,14 @@ int DB::StartBackgroundPartialMerges(const std::string &column_family_name,
118
164
119
165
tidesdb_err_t *err = tidesdb_start_background_partial_merge (
120
166
this ->tdb , column_family_name.c_str (), static_cast <int >(duration), min_sstables);
121
- ERR_HANDLER ()
167
+ if (err)
168
+ {
169
+ std::string error_message = err->message ;
170
+ int error_code = err->code ;
171
+ tidesdb_err_free (err);
172
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
173
+ }
174
+ return 0 ;
122
175
}
123
176
124
177
Txn::Txn (DB *db)
@@ -138,7 +191,14 @@ Txn::~Txn()
138
191
int Txn::Begin ()
139
192
{
140
193
tidesdb_err_t *err = tidesdb_txn_begin (this ->tdb , &this ->txn , nullptr );
141
- ERR_HANDLER ()
194
+ if (err)
195
+ {
196
+ std::string error_message = err->message ;
197
+ int error_code = err->code ;
198
+ tidesdb_err_free (err);
199
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
200
+ }
201
+ return 0 ;
142
202
}
143
203
144
204
int Txn::Put (const std::vector<uint8_t > *key, const std::vector<uint8_t > *value,
@@ -147,25 +207,53 @@ int Txn::Put(const std::vector<uint8_t> *key, const std::vector<uint8_t> *value,
147
207
auto ttl_time = std::chrono::duration_cast<std::chrono::seconds>(ttl).count ();
148
208
tidesdb_err_t *err = tidesdb_txn_put (this ->txn , key->data (), size_t (key->size ()), value->data (),
149
209
size_t (value->size ()), ttl_time);
150
- ERR_HANDLER ()
210
+ if (err)
211
+ {
212
+ std::string error_message = err->message ;
213
+ int error_code = err->code ;
214
+ tidesdb_err_free (err);
215
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
216
+ }
217
+ return 0 ;
151
218
}
152
219
153
220
int Txn::Delete (const std::vector<uint8_t > *key) const
154
221
{
155
222
tidesdb_err_t *err = tidesdb_txn_delete (this ->txn , key->data (), size_t (key->size ()));
156
- ERR_HANDLER ()
223
+ if (err)
224
+ {
225
+ std::string error_message = err->message ;
226
+ int error_code = err->code ;
227
+ tidesdb_err_free (err);
228
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
229
+ }
230
+ return 0 ;
157
231
}
158
232
159
233
int Txn::Commit () const
160
234
{
161
235
tidesdb_err_t *err = tidesdb_txn_commit (this ->txn );
162
- ERR_HANDLER ()
236
+ if (err)
237
+ {
238
+ std::string error_message = err->message ;
239
+ int error_code = err->code ;
240
+ tidesdb_err_free (err);
241
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
242
+ }
243
+ return 0 ;
163
244
}
164
245
165
246
int Txn::Rollback () const
166
247
{
167
248
tidesdb_err_t *err = tidesdb_txn_rollback (this ->txn );
168
- ERR_HANDLER ()
249
+ if (err)
250
+ {
251
+ std::string error_message = err->message ;
252
+ int error_code = err->code ;
253
+ tidesdb_err_free (err);
254
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
255
+ }
256
+ return 0 ;
169
257
}
170
258
171
259
Cursor::Cursor (DB *db, std::string column_family_name)
@@ -178,7 +266,14 @@ Cursor::Cursor(DB *db, std::string column_family_name)
178
266
int Cursor::Init ()
179
267
{
180
268
tidesdb_err_t *err = tidesdb_cursor_init (tdb, this ->column_family_name .c_str (), &this ->cursor );
181
- ERR_HANDLER ()
269
+ if (err)
270
+ {
271
+ std::string error_message = err->message ;
272
+ int error_code = err->code ;
273
+ tidesdb_err_free (err);
274
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
275
+ }
276
+ return 0 ;
182
277
}
183
278
184
279
Cursor::~Cursor ()
@@ -193,13 +288,27 @@ Cursor::~Cursor()
193
288
int Cursor::Next () const
194
289
{
195
290
tidesdb_err_t *err = tidesdb_cursor_next (this ->cursor );
196
- ERR_HANDLER ()
291
+ if (err)
292
+ {
293
+ std::string error_message = err->message ;
294
+ int error_code = err->code ;
295
+ tidesdb_err_free (err);
296
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
297
+ }
298
+ return 0 ;
197
299
}
198
300
199
301
int Cursor::Prev () const
200
302
{
201
303
tidesdb_err_t *err = tidesdb_cursor_prev (this ->cursor );
202
- ERR_HANDLER ()
304
+ if (err)
305
+ {
306
+ std::string error_message = err->message ;
307
+ int error_code = err->code ;
308
+ tidesdb_err_free (err);
309
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
310
+ }
311
+ return 0 ;
203
312
}
204
313
205
314
int Cursor::Get (std::vector<uint8_t > &key, std::vector<uint8_t > &value)
@@ -210,7 +319,14 @@ int Cursor::Get(std::vector<uint8_t> &key, std::vector<uint8_t> &value)
210
319
uint8_t *value_data = value.data ();
211
320
tidesdb_err_t *err =
212
321
tidesdb_cursor_get (this ->cursor , &key_data, &key_size, &value_data, &value_size);
213
- ERR_HANDLER ()
322
+ if (err)
323
+ {
324
+ std::string error_message = err->message ;
325
+ int error_code = err->code ;
326
+ tidesdb_err_free (err);
327
+ throw std::runtime_error (" Error " + std::to_string (error_code) + " : " + error_message);
328
+ }
329
+ return 0 ;
214
330
}
215
331
216
332
tidesdb_t *DB::GetTidesDB () const
0 commit comments