Skip to main content

rdbi_codegen/codegen/
code_generator.rs

1//! Main code generator orchestrator
2
3use crate::error::Result;
4
5use crate::config::CodegenConfig;
6use crate::parser::TableMetadata;
7
8pub use super::dao_generator::generate_daos;
9pub use super::struct_generator::generate_structs;
10
11/// Main code generator that orchestrates struct and DAO generation
12pub struct CodeGenerator<'a> {
13    config: &'a CodegenConfig,
14}
15
16impl<'a> CodeGenerator<'a> {
17    /// Create a new code generator with the given configuration
18    pub fn new(config: &'a CodegenConfig) -> Self {
19        Self { config }
20    }
21
22    /// Generate all code (structs and DAOs)
23    pub fn generate(&self, tables: &[TableMetadata]) -> Result<()> {
24        if self.config.generate_structs {
25            self.generate_structs(tables)?;
26        }
27        if self.config.generate_dao {
28            self.generate_daos(tables)?;
29        }
30        Ok(())
31    }
32
33    /// Generate struct files
34    pub fn generate_structs(&self, tables: &[TableMetadata]) -> Result<()> {
35        generate_structs(tables, self.config)
36    }
37
38    /// Generate DAO files
39    pub fn generate_daos(&self, tables: &[TableMetadata]) -> Result<()> {
40        generate_daos(tables, self.config)
41    }
42}