1use crate::error::Error;
2use crate::types::{Query, QueryResult, Transaction};
3use std::future::Future;
4
5pub trait DatabaseBackend: Send + Sync {
6 fn execute_query(&self, query: &Query)
7 -> impl Future<Output = Result<QueryResult, Error>> + Send;
8
9 fn execute_transaction(&self, transaction: &Transaction)
10 -> impl Future<Output = Result<Vec<QueryResult>, Error>> + Send;
11}
12
13impl<T: DatabaseBackend> DatabaseBackend for &T {
14 fn execute_query(&self, query: &Query)
15 -> impl Future<Output = Result<QueryResult, Error>> + Send {
16 (*self).execute_query(query)
17 }
18
19 fn execute_transaction(&self, transaction: &Transaction)
20 -> impl Future<Output = Result<Vec<QueryResult>, Error>> + Send {
21 (*self).execute_transaction(transaction)
22 }
23}