athena_cli/commands/database/
list.rs

1use super::utils::DatabaseDisplay;
2use crate::cli::DatabaseArgs;
3use crate::context::Context;
4use anyhow::Result;
5
6pub async fn list(ctx: &Context, args: &DatabaseArgs) -> Result<()> {
7    let client = ctx.create_athena_client();
8
9    // Use workgroup from args if provided
10    let workgroup = args
11        .aws
12        .workgroup
13        .as_ref()
14        .cloned()
15        .unwrap_or_else(|| ctx.workgroup());
16
17    let result = client
18        .list_databases()
19        .catalog_name(ctx.catalog())
20        .send()
21        .await?;
22
23    let databases = result.database_list();
24
25    if databases.is_empty() {
26        println!("No databases found in catalog: {}", ctx.catalog());
27        return Ok(());
28    }
29
30    // Display databases in a simple list
31    println!(
32        "Databases in catalog: {} (workgroup: {})",
33        ctx.catalog(),
34        workgroup
35    );
36
37    let table = DatabaseDisplay::create_databases_table(databases);
38    table.printstd();
39
40    Ok(())
41}