use std::path::PathBuf;
use ohlcv::Database;
use tracing::instrument;
use crate::{
config::{CoinConfig, Config},
Error,
};
use super::root_credentials;
#[instrument]
pub async fn drop(all: bool, config: Option<&PathBuf>) -> Result<(), Error> {
let mut config = Config::load(config)?;
let creds = root_credentials(&config.database)?;
if all {
config.database.drop_schema(creds, None).await?;
} else {
let coins = config
.coins
.iter()
.map(CoinConfig::as_coin)
.collect::<Vec<_>>();
config
.database
.drop_schema(creds, Some(coins.as_slice()))
.await?;
}
Ok(())
}