spacetimedb_cli/subcommands/
delete.rs

1use crate::common_args;
2use crate::config::Config;
3use crate::util::{add_auth_header_opt, database_identity, get_auth_header};
4use clap::{Arg, ArgMatches};
5
6pub fn cli() -> clap::Command {
7    clap::Command::new("delete")
8        .about("Deletes a SpacetimeDB database")
9        .arg(
10            Arg::new("database")
11                .required(true)
12                .help("The name or identity of the database to delete"),
13        )
14        .arg(common_args::server().help("The nickname, host name or URL of the server hosting the database"))
15        .arg(common_args::yes())
16        .after_help("Run `spacetime help delete` for more detailed information.\n")
17}
18
19pub async fn exec(mut config: Config, args: &ArgMatches) -> Result<(), anyhow::Error> {
20    let server = args.get_one::<String>("server").map(|s| s.as_ref());
21    let database = args.get_one::<String>("database").unwrap();
22    let force = args.get_flag("force");
23
24    let identity = database_identity(&config, database, server).await?;
25
26    let builder = reqwest::Client::new().delete(format!("{}/v1/database/{}", config.get_host_url(server)?, identity));
27    let auth_header = get_auth_header(&mut config, false, server, !force).await?;
28    let builder = add_auth_header_opt(builder, &auth_header);
29    builder.send().await?.error_for_status()?;
30
31    Ok(())
32}