#[derive(Default, Debug, Clone, Copy)]
pub enum SQLiteTransactionType {
#[default]
Deferred,
Immediate,
Exclusive,
}
#[cfg(feature = "rusqlite")]
impl From<SQLiteTransactionType> for ::rusqlite::TransactionBehavior {
fn from(tx_type: SQLiteTransactionType) -> Self {
match tx_type {
SQLiteTransactionType::Deferred => Self::Deferred,
SQLiteTransactionType::Immediate => Self::Immediate,
SQLiteTransactionType::Exclusive => Self::Exclusive,
}
}
}
#[cfg(feature = "rusqlite")]
impl From<::rusqlite::TransactionBehavior> for SQLiteTransactionType {
fn from(behavior: ::rusqlite::TransactionBehavior) -> Self {
match behavior {
::rusqlite::TransactionBehavior::Immediate => Self::Immediate,
::rusqlite::TransactionBehavior::Exclusive => Self::Exclusive,
_ => Self::Deferred,
}
}
}
#[cfg(feature = "libsql")]
impl From<SQLiteTransactionType> for libsql::TransactionBehavior {
fn from(tx_type: SQLiteTransactionType) -> Self {
match tx_type {
SQLiteTransactionType::Deferred => Self::Deferred,
SQLiteTransactionType::Immediate => Self::Immediate,
SQLiteTransactionType::Exclusive => Self::Exclusive,
}
}
}
#[cfg(feature = "libsql")]
impl From<libsql::TransactionBehavior> for SQLiteTransactionType {
fn from(behavior: libsql::TransactionBehavior) -> Self {
match behavior {
libsql::TransactionBehavior::Immediate => Self::Immediate,
libsql::TransactionBehavior::Exclusive => Self::Exclusive,
libsql::TransactionBehavior::Deferred | libsql::TransactionBehavior::ReadOnly => {
Self::Deferred
}
}
}
}
#[cfg(feature = "turso")]
impl From<SQLiteTransactionType> for turso::transaction::TransactionBehavior {
fn from(tx_type: SQLiteTransactionType) -> Self {
match tx_type {
SQLiteTransactionType::Deferred => Self::Deferred,
SQLiteTransactionType::Immediate => Self::Immediate,
SQLiteTransactionType::Exclusive => Self::Exclusive,
}
}
}
#[cfg(feature = "turso")]
impl From<turso::transaction::TransactionBehavior> for SQLiteTransactionType {
fn from(behavior: turso::transaction::TransactionBehavior) -> Self {
match behavior {
turso::transaction::TransactionBehavior::Immediate => Self::Immediate,
turso::transaction::TransactionBehavior::Exclusive => Self::Exclusive,
_ => Self::Deferred,
}
}
}