Skip to main content

text_document_common/database/
db_context.rs

1// Generated by Qleany v1.4.8 from db_context.tera
2
3use crate::direct_access::setup::initialize_all_tables;
4use crate::error::RepositoryError;
5use redb::Database;
6use std::sync::Arc;
7
8#[derive(Clone, Debug)]
9pub struct DbContext {
10    database: Arc<Database>,
11}
12
13impl DbContext {
14    pub fn new() -> Result<Self, RepositoryError> {
15        let db = DbContext::create_db_in_memory()?;
16
17        // Initialize all necessary tables
18        let write_txn = db.begin_write()?;
19        initialize_all_tables(&write_txn)?;
20        write_txn.commit()?;
21
22        Ok(DbContext {
23            database: Arc::new(db),
24        })
25    }
26
27    fn create_db_in_memory() -> Result<Database, RepositoryError> {
28        let redb_builder = redb::Builder::new();
29        let in_memory_backend = redb::backends::InMemoryBackend::new();
30        let db = redb_builder.create_with_backend(in_memory_backend)?;
31        Ok(db)
32    }
33
34    pub fn get_database(&self) -> &Database {
35        &self.database
36    }
37}