pub mod backend_generator;
pub mod rust_generator;
pub mod typescript_generator;
#[cfg(test)]
mod tests;
use crate::openapi::spec::OpenApiSpec;
use crate::Result;
#[derive(Debug, Clone, Default)]
pub struct CodegenConfig {
pub mock_data_strategy: MockDataStrategy,
pub port: Option<u16>,
pub enable_cors: bool,
pub default_delay_ms: Option<u64>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum MockDataStrategy {
Random,
Examples,
Defaults,
#[default]
ExamplesOrRandom,
}
pub fn generate_mock_server_code(
spec: &OpenApiSpec,
language: &str,
config: &CodegenConfig,
) -> Result<String> {
match language {
"rs" | "rust" => rust_generator::generate(spec, config),
"ts" | "typescript" => typescript_generator::generate(spec, config),
"js" | "javascript" => typescript_generator::generate(spec, config),
_ => Err(crate::Error::internal(format!(
"Unsupported language: {}. Supported: rust, typescript, javascript",
language
))),
}
}