use crate::table_dao::table_util;
use sqlx::SqlitePool;
use std::collections::HashMap;
pub mod table_dao;
pub mod dsl_dao;
mod utils;
mod write_util;
pub async fn generate(conn: SqlitePool, dsl_dir: &str, type_overrides: &HashMap<String, String>) {
table_util::set_type_overrides(type_overrides);
let table_entities = table_util::all_entities(&conn).await;
for entity in table_entities {
let mod_name = &entity.name;
write_util::add_entity(mod_name, entity.clone());
write_util::add_method_source(mod_name, entity.make_insert_func());
write_util::add_method_source(mod_name, entity.make_select_one_func());
write_util::add_method_source(mod_name, entity.make_select_all_func());
write_util::add_method_source(mod_name, entity.make_update_func());
write_util::add_method_source(mod_name, entity.make_set_delete_func());
write_util::add_method_source(mod_name, entity.make_set_delete_ignore_version_func());
write_util::add_method_source(mod_name, entity.make_delete_func());
}
let dsl_list = dsl_dao::read_dsl::get_dsl_list(&conn, dsl_dir).await;
for it in dsl_list {
dsl_dao::dsl_code_util::make_source(&conn, &it).await;
}
write_util::write();
}