use super::Operation;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum IsolationLevel {
ReadUncommitted,
ReadCommitted,
RepeatableRead,
Serializable,
}
#[derive(Debug, Clone)]
pub enum Transaction {
Start {
isolation: Option<IsolationLevel>,
read_only: bool,
},
Commit,
Rollback,
Savepoint(String),
ReleaseSavepoint(String),
RollbackToSavepoint(String),
}
impl Transaction {
pub fn start() -> Self {
Self::Start {
isolation: None,
read_only: false,
}
}
}
impl Operation {
pub fn is_transaction_commit(&self) -> bool {
matches!(self, Operation::Transaction(Transaction::Commit))
}
}
impl From<Transaction> for Operation {
fn from(value: Transaction) -> Self {
Self::Transaction(value)
}
}