Skip to main content

systemprompt_database/models/
transaction.rs

1//! Dyn-safe transaction trait used by the dynamic-SQL surface.
2
3use 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}