wip: add sqlx setup

This commit is contained in:
Alexander Navarro 2025-01-14 20:24:25 -03:00
parent 57074a89ff
commit 704be76887
5 changed files with 1856 additions and 14 deletions

View file

@ -1,4 +1,6 @@
use clap::{Parser, Subcommand};
use futures::TryStreamExt;
use sqlx::postgres::PgPool;
#[derive(Parser)]
#[command(version, about, long_about = None)]
@ -21,14 +23,28 @@ enum Commands {
},
}
fn main() {
#[tokio::main]
async fn main() {
let cli = Cli::parse();
let url = cli.db_url.unwrap();
// You can check for the existence of subcommands, and if found use their
// matches just as you would the top level cmd
match &cli.command {
Commands::Query { sql } => {
println!("Provided query: {sql:?}");
}
Commands::Query { sql } => handle_query(url, sql).await.unwrap(),
}
}
async fn handle_query(url: String, query: &String) -> Result<(), sqlx::Error> {
let pool = PgPool::connect(url.as_str()).await?;
let mut rows = sqlx::query("DELETE FROM table").fetch(&pool);
while let Some(row) = rows.try_next().await? {
// map the row into a user-defined domain type
let email: &str = row.try_get("email")?;
}
return Ok(());
}