pub mod postgres;
pub mod mysql;
pub mod sqlite;
pub mod mongodb;
use crate::types::DatabaseType;
use std::collections::HashMap;
use serde_json::Value;
pub trait DatabaseJsonProcessor {
fn convert_json_to_data_map(
&self,
json_obj: &serde_json::Map<String, Value>,
table_name: &str,
db_alias: &str,
) -> Result<HashMap<String, crate::types::DataValue>, String>;
fn get_database_type(&self) -> DatabaseType;
}
pub fn create_database_json_processor(db_type: &DatabaseType) -> Box<dyn DatabaseJsonProcessor> {
match db_type {
DatabaseType::PostgreSQL => Box::new(postgres::PostgresJsonProcessor::new()),
DatabaseType::MySQL => Box::new(mysql::MysqlJsonProcessor::new()),
DatabaseType::SQLite => Box::new(sqlite::SqliteJsonProcessor::new()),
DatabaseType::MongoDB => Box::new(mongodb::MongoJsonProcessor::new()),
}
}