Skip to main content

datasources/mocks/
mock_driver.rs

1use 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}