cdbc_sqlite/
transaction.rs

1use std::ptr;
2
3use libsqlite3_sys::{sqlite3_exec, SQLITE_OK};
4
5use cdbc::error::Error;
6use cdbc::executor::Executor;
7use crate::{Sqlite, SqliteConnection, SqliteError};
8use cdbc::transaction::{
9    begin_ansi_transaction_sql, commit_ansi_transaction_sql, rollback_ansi_transaction_sql,
10    TransactionManager,
11};
12
13/// Implementation of [`TransactionManager`] for SQLite.
14pub struct SqliteTransactionManager;
15
16impl TransactionManager for SqliteTransactionManager {
17    type Database = Sqlite;
18
19    fn begin(conn: &mut SqliteConnection) ->  Result<(), Error> {
20      conn.worker.begin()
21    }
22
23    fn commit(conn: &mut SqliteConnection) ->Result<(), Error> {
24       conn.worker.commit()
25    }
26
27    fn rollback(conn: &mut SqliteConnection) ->  Result<(), Error> {
28       conn.worker.rollback()
29    }
30
31    fn start_rollback(conn: &mut SqliteConnection) {
32        conn.worker.start_rollback().ok();
33    }
34}