|
1 | 1 | use crate::error::Result; |
2 | | -use crate::{config, python, typescript, Language}; |
| 2 | +use crate::{config, python, rust, typescript, Language}; |
3 | 3 | use rohas_parser::Schema; |
4 | 4 | use std::fs; |
5 | 5 | use std::path::Path; |
@@ -28,6 +28,7 @@ impl Generator { |
28 | 28 | match self.language { |
29 | 29 | Language::TypeScript => self.generate_typescript(schema, output_dir)?, |
30 | 30 | Language::Python => self.generate_python(schema, output_dir)?, |
| 31 | + Language::Rust => self.generate_rust(schema, output_dir)?, |
31 | 32 | } |
32 | 33 |
|
33 | 34 | info!("Code generation completed successfully"); |
@@ -109,4 +110,25 @@ impl Generator { |
109 | 110 |
|
110 | 111 | Ok(()) |
111 | 112 | } |
| 113 | + |
| 114 | + fn generate_rust(&self, schema: &Schema, output_dir: &Path) -> Result<()> { |
| 115 | + rust::generate_state(output_dir)?; |
| 116 | + rust::generate_models(schema, output_dir)?; |
| 117 | + rust::generate_dtos(schema, output_dir)?; |
| 118 | + rust::generate_apis(schema, output_dir)?; |
| 119 | + rust::generate_events(schema, output_dir)?; |
| 120 | + rust::generate_crons(schema, output_dir)?; |
| 121 | + rust::generate_websockets(schema, output_dir)?; |
| 122 | + rust::generate_middlewares(schema, output_dir)?; |
| 123 | + rust::generate_lib_rs(schema, output_dir)?; |
| 124 | + |
| 125 | + info!("Generating Rust configuration files"); |
| 126 | + config::generate_cargo_toml(schema, output_dir)?; |
| 127 | + |
| 128 | + if rust::is_in_rohas_workspace(output_dir) { |
| 129 | + rust::generate_dev_scripts(output_dir)?; |
| 130 | + } |
| 131 | + |
| 132 | + Ok(()) |
| 133 | + } |
112 | 134 | } |
0 commit comments