use crate::writers::{
create_create_controller_in_existing_folder, create_create_controller_in_new_folder,
create_read_controller_in_existing_folder, create_read_controller_in_new_folder,
create_update_controller_in_existing_folder, create_update_model,
};
use crate::CRUDType;
use eyre::Error;
pub async fn create_new_controller(
model_name: String,
controller_type: CRUDType,
) -> Result<(), Error> {
println!("Does a controller folder already exist (y/n): ");
let mut input = String::new();
std::io::stdin().read_line(&mut input).unwrap();
let input = input.trim();
if input == "y" {
match controller_type {
CRUDType::Read => {
create_read_controller_in_existing_folder(model_name.clone()).unwrap_or_else(
|why| {
println!("Failed to create read controller: {:}", why);
},
);
Ok(())
}
CRUDType::Create => {
create_create_controller_in_existing_folder(model_name.clone()).unwrap_or_else(
|why| {
println!("Failed to create create controller: {:}", why);
},
);
Ok(())
}
CRUDType::Update => {
create_update_controller_in_existing_folder(&model_name).unwrap_or_else(|why| {
println!("Failed to create update controller: {:}", why);
});
create_update_model(&model_name)
.await
.expect("Failed to create update model");
Ok(())
}
CRUDType::Delete => {
todo!("Delete controller")
}
}
} else {
match controller_type {
CRUDType::Read => {
create_read_controller_in_new_folder(model_name.clone()).unwrap_or_else(|why| {
println!("Failed to create read controller: {:}", why);
});
Ok(())
}
CRUDType::Create => {
create_create_controller_in_new_folder(model_name.clone()).unwrap_or_else(|why| {
println!("Failed to create create controller: {:}", why);
});
Ok(())
}
CRUDType::Update => {
create_update_controller_in_existing_folder(&model_name).unwrap_or_else(|why| {
println!("Failed to create update controller: {:}", why);
});
Ok(())
}
CRUDType::Delete => {
todo!("Delete controller")
}
}
}
}