1pub mod builder;
10pub mod common;
11pub mod conditions;
12pub mod helpers;
13pub mod traits;
14pub mod values;
15
16pub mod prelude {
22 pub use crate::SQLiteTransactionType;
23 pub use crate::traits::SQLiteColumn;
24 pub use crate::values::SQLiteValue;
25
26 #[cfg(feature = "rusqlite")]
28 pub use ::rusqlite::types::ToSql;
29}
30
31pub use self::values::{InsertValue, OwnedSQLiteValue, SQLiteValue};
32
33#[derive(Default, Debug, Clone, Copy)]
35pub enum SQLiteTransactionType {
36 #[default]
37 Deferred,
39 Immediate,
41 Exclusive,
43}
44
45#[cfg(feature = "rusqlite")]
46impl From<SQLiteTransactionType> for ::rusqlite::TransactionBehavior {
47 fn from(tx_type: SQLiteTransactionType) -> Self {
48 match tx_type {
49 SQLiteTransactionType::Deferred => ::rusqlite::TransactionBehavior::Deferred,
50 SQLiteTransactionType::Immediate => ::rusqlite::TransactionBehavior::Immediate,
51 SQLiteTransactionType::Exclusive => ::rusqlite::TransactionBehavior::Exclusive,
52 }
53 }
54}
55
56#[cfg(feature = "rusqlite")]
57impl From<::rusqlite::TransactionBehavior> for SQLiteTransactionType {
58 fn from(behavior: ::rusqlite::TransactionBehavior) -> Self {
59 match behavior {
60 ::rusqlite::TransactionBehavior::Deferred => SQLiteTransactionType::Deferred,
61 ::rusqlite::TransactionBehavior::Immediate => SQLiteTransactionType::Immediate,
62 ::rusqlite::TransactionBehavior::Exclusive => SQLiteTransactionType::Exclusive,
63 _ => SQLiteTransactionType::Deferred, }
65 }
66}
67
68#[cfg(feature = "libsql")]
70impl From<SQLiteTransactionType> for libsql::TransactionBehavior {
71 fn from(tx_type: SQLiteTransactionType) -> Self {
72 match tx_type {
73 SQLiteTransactionType::Deferred => libsql::TransactionBehavior::Deferred,
74 SQLiteTransactionType::Immediate => libsql::TransactionBehavior::Immediate,
75 SQLiteTransactionType::Exclusive => libsql::TransactionBehavior::Exclusive,
76 }
77 }
78}
79
80#[cfg(feature = "libsql")]
82impl From<libsql::TransactionBehavior> for SQLiteTransactionType {
83 fn from(behavior: libsql::TransactionBehavior) -> Self {
84 match behavior {
85 libsql::TransactionBehavior::Deferred => SQLiteTransactionType::Deferred,
86 libsql::TransactionBehavior::Immediate => SQLiteTransactionType::Immediate,
87 libsql::TransactionBehavior::Exclusive => SQLiteTransactionType::Exclusive,
88 libsql::TransactionBehavior::ReadOnly => SQLiteTransactionType::Deferred, }
90 }
91}
92#[cfg(feature = "turso")]
94impl From<SQLiteTransactionType> for turso::transaction::TransactionBehavior {
95 fn from(tx_type: SQLiteTransactionType) -> Self {
96 match tx_type {
97 SQLiteTransactionType::Deferred => turso::transaction::TransactionBehavior::Deferred,
98 SQLiteTransactionType::Immediate => turso::transaction::TransactionBehavior::Immediate,
99 SQLiteTransactionType::Exclusive => turso::transaction::TransactionBehavior::Exclusive,
100 }
101 }
102}
103
104#[cfg(feature = "turso")]
106impl From<turso::transaction::TransactionBehavior> for SQLiteTransactionType {
107 fn from(behavior: turso::transaction::TransactionBehavior) -> Self {
108 match behavior {
109 turso::transaction::TransactionBehavior::Deferred => SQLiteTransactionType::Deferred,
110 turso::transaction::TransactionBehavior::Immediate => SQLiteTransactionType::Immediate,
111 turso::transaction::TransactionBehavior::Exclusive => SQLiteTransactionType::Exclusive,
112 _ => SQLiteTransactionType::Deferred,
113 }
114 }
115}
116
117#[macro_export]
130macro_rules! params {
131 [$($param:tt),+ $(,)?] => {
133 [
134 $(
135 $crate::params_internal!($param)
136 ),+
137 ]
138 };
139}
140
141#[macro_export]
143macro_rules! params_internal {
144 ({ $key:ident: $value:expr }) => {
146 ::drizzle_rs::core::ParamBind::new(stringify!($key), $crate::SQLiteValue::from($value))
147 };
148 ($value:expr) => {
150 ::drizzle_rs::core::ParamBind::new($crate::SQLiteValue::from($value))
151 };
152}