Skip to content

Commit f101310

Browse files
committed
Continue implementing new realization. Moved Transaction TransactionObjectTrait trait to transaction file. pre-commit disabled.
Signed-off-by: chandr-andr (Kiselev Aleksandr) <chandr@chandr.net>
1 parent a809a34 commit f101310

File tree

2 files changed

+51
-51
lines changed

2 files changed

+51
-51
lines changed

src/common.rs

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -35,56 +35,6 @@ pub fn add_module(
3535
Ok(())
3636
}
3737

38-
pub trait TransactionObjectTrait {
39-
fn start_transaction(
40-
&self,
41-
isolation_level: Option<IsolationLevel>,
42-
read_variant: Option<ReadVariant>,
43-
defferable: Option<bool>,
44-
) -> impl std::future::Future<Output = RustPSQLDriverPyResult<()>> + Send;
45-
fn commit(&self) -> impl std::future::Future<Output = RustPSQLDriverPyResult<()>> + Send;
46-
fn rollback(&self) -> impl std::future::Future<Output = RustPSQLDriverPyResult<()>> + Send;
47-
}
48-
49-
impl TransactionObjectTrait for Object {
50-
async fn start_transaction(
51-
&self,
52-
isolation_level: Option<IsolationLevel>,
53-
read_variant: Option<ReadVariant>,
54-
deferrable: Option<bool>,
55-
) -> RustPSQLDriverPyResult<()> {
56-
let mut querystring = "START TRANSACTION".to_string();
57-
58-
if let Some(level) = isolation_level {
59-
let level = &level.to_str_level();
60-
querystring.push_str(format!(" ISOLATION LEVEL {level}").as_str());
61-
};
62-
63-
querystring.push_str(match read_variant {
64-
Some(ReadVariant::ReadOnly) => " READ ONLY",
65-
Some(ReadVariant::ReadWrite) => " READ WRITE",
66-
None => "",
67-
});
68-
69-
querystring.push_str(match deferrable {
70-
Some(true) => " DEFERRABLE",
71-
Some(false) => " NOT DEFERRABLE",
72-
None => "",
73-
});
74-
self.batch_execute(&querystring).await?;
75-
76-
Ok(())
77-
}
78-
async fn commit(&self) -> RustPSQLDriverPyResult<()> {
79-
self.batch_execute("COMMIT;").await?;
80-
Ok(())
81-
}
82-
async fn rollback(&self) -> RustPSQLDriverPyResult<()> {
83-
self.batch_execute("ROLLBACK;").await?;
84-
Ok(())
85-
}
86-
}
87-
8838
pub trait ObjectQueryTrait {
8939
fn psqlpy_query_one(
9040
&self,

src/driver/transaction.rs

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use super::{
1010
cursor::Cursor,
1111
transaction_options::{IsolationLevel, ReadVariant},
1212
};
13-
use crate::common::{ObjectQueryTrait, TransactionObjectTrait};
13+
use crate::common::ObjectQueryTrait;
1414
use std::{collections::HashSet, sync::Arc};
1515
// use super::connection::RustConnection;
1616

@@ -1244,6 +1244,56 @@ use std::{collections::HashSet, sync::Arc};
12441244
// }
12451245
// }
12461246

1247+
pub trait TransactionObjectTrait {
1248+
fn start_transaction(
1249+
&self,
1250+
isolation_level: Option<IsolationLevel>,
1251+
read_variant: Option<ReadVariant>,
1252+
defferable: Option<bool>,
1253+
) -> impl std::future::Future<Output = RustPSQLDriverPyResult<()>> + Send;
1254+
fn commit(&self) -> impl std::future::Future<Output = RustPSQLDriverPyResult<()>> + Send;
1255+
fn rollback(&self) -> impl std::future::Future<Output = RustPSQLDriverPyResult<()>> + Send;
1256+
}
1257+
1258+
impl TransactionObjectTrait for Object {
1259+
async fn start_transaction(
1260+
&self,
1261+
isolation_level: Option<IsolationLevel>,
1262+
read_variant: Option<ReadVariant>,
1263+
deferrable: Option<bool>,
1264+
) -> RustPSQLDriverPyResult<()> {
1265+
let mut querystring = "START TRANSACTION".to_string();
1266+
1267+
if let Some(level) = isolation_level {
1268+
let level = &level.to_str_level();
1269+
querystring.push_str(format!(" ISOLATION LEVEL {level}").as_str());
1270+
};
1271+
1272+
querystring.push_str(match read_variant {
1273+
Some(ReadVariant::ReadOnly) => " READ ONLY",
1274+
Some(ReadVariant::ReadWrite) => " READ WRITE",
1275+
None => "",
1276+
});
1277+
1278+
querystring.push_str(match deferrable {
1279+
Some(true) => " DEFERRABLE",
1280+
Some(false) => " NOT DEFERRABLE",
1281+
None => "",
1282+
});
1283+
self.batch_execute(&querystring).await?;
1284+
1285+
Ok(())
1286+
}
1287+
async fn commit(&self) -> RustPSQLDriverPyResult<()> {
1288+
self.batch_execute("COMMIT;").await?;
1289+
Ok(())
1290+
}
1291+
async fn rollback(&self) -> RustPSQLDriverPyResult<()> {
1292+
self.batch_execute("ROLLBACK;").await?;
1293+
Ok(())
1294+
}
1295+
}
1296+
12471297
#[pyclass]
12481298
pub struct Transaction {
12491299
pub db_client: Arc<Object>,

0 commit comments

Comments
 (0)