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