systemprompt_database/models/
transaction.rs1use crate::error::DatabaseResult;
7use crate::models::{JsonRow, QuerySelector, ToDbValue};
8use async_trait::async_trait;
9
10#[async_trait]
13pub trait DatabaseTransaction: Send {
14 async fn execute(
15 &mut self,
16 query: &dyn QuerySelector,
17 params: &[&dyn ToDbValue],
18 ) -> DatabaseResult<u64>;
19
20 async fn fetch_all(
21 &mut self,
22 query: &dyn QuerySelector,
23 params: &[&dyn ToDbValue],
24 ) -> DatabaseResult<Vec<JsonRow>>;
25
26 async fn fetch_one(
27 &mut self,
28 query: &dyn QuerySelector,
29 params: &[&dyn ToDbValue],
30 ) -> DatabaseResult<JsonRow>;
31
32 async fn fetch_optional(
33 &mut self,
34 query: &dyn QuerySelector,
35 params: &[&dyn ToDbValue],
36 ) -> DatabaseResult<Option<JsonRow>>;
37
38 async fn commit(self: Box<Self>) -> DatabaseResult<()>;
39
40 async fn rollback(self: Box<Self>) -> DatabaseResult<()>;
41}