use clap::Parser;
use duckquill::{
app,
config::{Cli, Command},
engine::Text2SqlEngine,
error::AppResult,
logging,
};
#[tokio::main]
async fn main() -> AppResult<()> {
let cli = Cli::parse();
logging::init(cli.log_filter());
match cli.command() {
Command::Serve(args) => app::run(args.into()).await,
Command::Convert(args) => {
let response = Text2SqlEngine::new().convert_from_args(args).await?;
println!("{}", serde_json::to_string_pretty(&response)?);
Ok(())
}
Command::Schema(args) => {
let response = Text2SqlEngine::new().schema_from_args(args).await?;
println!("{}", serde_json::to_string_pretty(&response)?);
Ok(())
}
Command::Query(args) => {
let response = Text2SqlEngine::new().query_from_args(args).await?;
println!("{}", serde_json::to_string_pretty(&response)?);
Ok(())
}
Command::Benchmark(args) => {
let response = Text2SqlEngine::new().benchmark_from_args(args).await?;
println!("{}", serde_json::to_string_pretty(&response)?);
Ok(())
}
}
}