diff --git a/databuild/service/openapi_spec_generator.rs b/databuild/service/openapi_spec_generator.rs new file mode 100644 index 0000000..6dfa075 --- /dev/null +++ b/databuild/service/openapi_spec_generator.rs @@ -0,0 +1,35 @@ +use databuild::service::BuildGraphService; +use std::collections::HashMap; + +#[tokio::main] +async fn main() { + // Disable logging to keep output clean + log::set_max_level(log::LevelFilter::Off); + + // Create a minimal service instance for OpenAPI generation + let service = match BuildGraphService::new( + "sqlite://:memory:", // Use in-memory database for spec generation + "//example:graph".to_string(), + "job_lookup".to_string(), + HashMap::new(), + ).await { + Ok(service) => service, + Err(e) => { + eprintln!("Failed to create service for OpenAPI generation: {}", e); + std::process::exit(1); + } + }; + + // Generate and print OpenAPI spec + let spec = service.generate_openapi_spec(); + match serde_json::to_string_pretty(&spec) { + Ok(json) => { + println!("{}", json); + std::process::exit(0); + } + Err(e) => { + eprintln!("Failed to serialize OpenAPI spec: {}", e); + std::process::exit(1); + } + } +} \ No newline at end of file