@@ -209,57 +209,19 @@ proc db_begin() {.importdb: "BEGIN".}
209
209
proc db_commit() {.importdb: " COMMIT" .}
210
210
proc db_rollback() {.importdb: " ROLLBACK" .}
211
211
212
- # type Transaction* = object
213
- # origin: ptr Database
214
-
215
- # proc `=destroy`*(tran: var Transaction) =
216
- # if tran.origin != nil:
217
- # tran.origin[].db_rollback()
218
-
219
- # proc `=copy`*(tran: var Transaction, rhs: Transaction) {.error: "You should not copy transaction".}
220
-
221
- # proc initTransaction*(db: var Database): Transaction =
222
- # db.db_begin()
223
- # result.origin = addr db
224
-
225
- # proc commit*(tran: var Transaction) =
226
- # if tran.origin != nil:
227
- # tran.origin[].db_commit()
228
- # wasMoved(tran)
229
-
230
- # proc rollback*(tran: var Transaction) =
231
- # if tran.origin != nil:
232
- # tran.origin[].db_rollback()
233
- # wasMoved(tran)
234
-
235
212
template transaction* (db: var Database, body: untyped ): untyped =
236
213
db_begin db
237
214
block outer:
238
- var cached_exception: ref Exception
215
+ template commit() {.inject, used.} =
216
+ db_commit db
217
+ break outer
218
+ template rollback() {.inject, used.} =
219
+ db_rollback db
220
+ break outer
239
221
block inner:
240
222
try :
241
- template commit() {.inject, used.} =
242
- try :
243
- db_commit db
244
- break outer
245
- except :
246
- cached_exception = getCurrentException()
247
- break inner
248
- template rollback() {.inject, used.} =
249
- try :
250
- db_rollback db
251
- break outer
252
- except :
253
- cached_exception = getCurrentException()
254
- break inner
255
223
body
256
- try :
257
- commit()
258
- except :
259
- cached_exception = getCurrentException()
260
- break inner
224
+ commit()
261
225
except :
262
226
db_rollback db
263
227
raise getCurrentException()
264
- if cached_exception != nil :
265
- raise cached_exception
0 commit comments