drizzle_sqlite/
connection.rs1#[cfg(not(any(feature = "libsql", feature = "rusqlite", feature = "turso")))]
4use std::marker::PhantomData;
5
6#[derive(Debug)]
8pub enum ConnectionRef<'a> {
9 #[cfg(feature = "libsql")]
10 LibSql(&'a libsql::Connection),
11 #[cfg(feature = "rusqlite")]
12 Rusqlite(&'a rusqlite::Connection),
13 #[cfg(feature = "turso")]
14 Turso(&'a turso::Connection),
15 #[cfg(not(any(feature = "libsql", feature = "rusqlite", feature = "turso")))]
16 _Phantom(PhantomData<&'a ()>),
17}
18
19#[cfg(feature = "libsql")]
21impl<'a> From<&'a libsql::Connection> for ConnectionRef<'a> {
22 fn from(conn: &'a libsql::Connection) -> Self {
23 ConnectionRef::LibSql(conn)
24 }
25}
26
27#[cfg(feature = "rusqlite")]
28impl<'a> From<&'a rusqlite::Connection> for ConnectionRef<'a> {
29 fn from(conn: &'a rusqlite::Connection) -> Self {
30 ConnectionRef::Rusqlite(conn)
31 }
32}
33
34#[cfg(feature = "turso")]
35impl<'a> From<&'a turso::Connection> for ConnectionRef<'a> {
36 fn from(conn: &'a turso::Connection) -> Self {
37 ConnectionRef::Turso(conn)
38 }
39}
40
41#[derive(Default, Debug, Clone, Copy)]
43pub enum SQLiteTransactionType {
44 #[default]
45 Deferred,
47 Immediate,
49 Exclusive,
51}
52
53#[cfg(feature = "rusqlite")]
54impl From<SQLiteTransactionType> for ::rusqlite::TransactionBehavior {
55 fn from(tx_type: SQLiteTransactionType) -> Self {
56 match tx_type {
57 SQLiteTransactionType::Deferred => ::rusqlite::TransactionBehavior::Deferred,
58 SQLiteTransactionType::Immediate => ::rusqlite::TransactionBehavior::Immediate,
59 SQLiteTransactionType::Exclusive => ::rusqlite::TransactionBehavior::Exclusive,
60 }
61 }
62}
63
64#[cfg(feature = "rusqlite")]
65impl From<::rusqlite::TransactionBehavior> for SQLiteTransactionType {
66 fn from(behavior: ::rusqlite::TransactionBehavior) -> Self {
67 match behavior {
68 ::rusqlite::TransactionBehavior::Deferred => SQLiteTransactionType::Deferred,
69 ::rusqlite::TransactionBehavior::Immediate => SQLiteTransactionType::Immediate,
70 ::rusqlite::TransactionBehavior::Exclusive => SQLiteTransactionType::Exclusive,
71 _ => SQLiteTransactionType::Deferred, }
73 }
74}
75
76#[cfg(feature = "libsql")]
78impl From<SQLiteTransactionType> for libsql::TransactionBehavior {
79 fn from(tx_type: SQLiteTransactionType) -> Self {
80 match tx_type {
81 SQLiteTransactionType::Deferred => libsql::TransactionBehavior::Deferred,
82 SQLiteTransactionType::Immediate => libsql::TransactionBehavior::Immediate,
83 SQLiteTransactionType::Exclusive => libsql::TransactionBehavior::Exclusive,
84 }
85 }
86}
87
88#[cfg(feature = "libsql")]
90impl From<libsql::TransactionBehavior> for SQLiteTransactionType {
91 fn from(behavior: libsql::TransactionBehavior) -> Self {
92 match behavior {
93 libsql::TransactionBehavior::Deferred => SQLiteTransactionType::Deferred,
94 libsql::TransactionBehavior::Immediate => SQLiteTransactionType::Immediate,
95 libsql::TransactionBehavior::Exclusive => SQLiteTransactionType::Exclusive,
96 libsql::TransactionBehavior::ReadOnly => SQLiteTransactionType::Deferred, }
98 }
99}
100
101#[cfg(feature = "turso")]
103impl From<SQLiteTransactionType> for turso::transaction::TransactionBehavior {
104 fn from(tx_type: SQLiteTransactionType) -> Self {
105 match tx_type {
106 SQLiteTransactionType::Deferred => turso::transaction::TransactionBehavior::Deferred,
107 SQLiteTransactionType::Immediate => turso::transaction::TransactionBehavior::Immediate,
108 SQLiteTransactionType::Exclusive => turso::transaction::TransactionBehavior::Exclusive,
109 }
110 }
111}
112
113#[cfg(feature = "turso")]
115impl From<turso::transaction::TransactionBehavior> for SQLiteTransactionType {
116 fn from(behavior: turso::transaction::TransactionBehavior) -> Self {
117 match behavior {
118 turso::transaction::TransactionBehavior::Deferred => SQLiteTransactionType::Deferred,
119 turso::transaction::TransactionBehavior::Immediate => SQLiteTransactionType::Immediate,
120 turso::transaction::TransactionBehavior::Exclusive => SQLiteTransactionType::Exclusive,
121 _ => SQLiteTransactionType::Deferred,
122 }
123 }
124}