1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
pub mod errors;
pub mod models;
use leetcode_core as api;
pub use models::{question::DbQuestion, topic::DbTopic};
use models::{QuestionTopicMap, TopicQuestionMap};
use native_db::DatabaseBuilder;
use leetcode_tui_shared::RoCell;

pub static DB_BUILDER: RoCell<DatabaseBuilder> = RoCell::new();

pub fn define_schema(db_builder: &mut DatabaseBuilder) -> errors::DBResult<()> {
    db_builder.define::<DbQuestion>()?;
    db_builder.define::<DbTopic>()?;
    db_builder.define::<QuestionTopicMap>()?;
    db_builder.define::<TopicQuestionMap>()?;
    Ok(())
}

pub fn init() {
    DB_BUILDER.init({
        let mut db_builder = DatabaseBuilder::new();
        define_schema(&mut db_builder).expect("DB schema initialization failed.");
        db_builder
    })
}