Skip to main content

rust_ef_sqlite/
di_extension.rs

1use rust_ef::provider::IDatabaseProvider;
2use std::sync::Arc;
3
4pub trait DbContextOptionsBuilderExt {
5    fn use_sqlite(&mut self, connection_string: &str) -> &mut Self;
6    fn use_sqlite_in_memory(&mut self) -> &mut Self;
7}
8
9impl DbContextOptionsBuilderExt for rust_ef::db_context::DbContextOptionsBuilder {
10    fn use_sqlite(&mut self, connection_string: &str) -> &mut Self {
11        let cs = connection_string.to_string();
12        self.set_provider_factory(
13            "sqlite",
14            &cs,
15            Arc::new(move |cs: &str| {
16                Ok(Arc::new(crate::provider::SqliteProvider::new(cs)?)
17                    as Arc<dyn IDatabaseProvider>)
18            }),
19        )
20    }
21
22    fn use_sqlite_in_memory(&mut self) -> &mut Self {
23        self.set_provider_factory(
24            "sqlite",
25            ":memory:",
26            Arc::new(|_cs: &str| {
27                Ok(Arc::new(crate::provider::SqliteProvider::new_in_memory()?)
28                    as Arc<dyn IDatabaseProvider>)
29            }),
30        )
31    }
32}