datasources/mocks/
mock_driver.rs1use crate::command::Command;
2use crate::connection::Connection;
3use crate::converters::TypeConverter;
4use crate::driver::Driver;
5use crate::isolation_level::IsolationLevel;
6use crate::transaction::Transaction;
7use crate::value::Value;
8use std::collections::HashMap;
9use std::sync::Arc;
10
11use super::mock_connection::MockConnection;
12use super::mock_transaction::MockTransaction;
13
14pub struct MockDriver;
15
16impl MockDriver {
17 pub fn arc() -> Arc<dyn Driver> {
18 Arc::new(Self)
19 }
20}
21
22impl Driver for MockDriver {
23 fn connection(&self, _: Option<&HashMap<String, String>>) -> Arc<dyn Connection> {
24 MockConnection::new()
25 }
26
27 fn command(&self, connection: Arc<dyn Connection>) -> Arc<dyn Command> {
28 connection.create_command()
29 }
30
31 fn transaction(
32 &self,
33 _: Arc<dyn Connection>,
34 isolation: IsolationLevel,
35 ) -> Arc<dyn Transaction> {
36 let txn = MockTransaction::new_unbound();
37 txn.set_isolation(isolation);
38 Arc::new(txn)
39 }
40
41 fn row_type_converters(
42 &self,
43 ) -> HashMap<String, Box<dyn TypeConverter<Value, Value> + Send + Sync>> {
44 HashMap::new()
45 }
46}