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