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