diff --git a/sqlx-cli/src/database.rs b/sqlx-cli/src/database.rs index 72558481..36b4e1fb 100644 --- a/sqlx-cli/src/database.rs +++ b/sqlx-cli/src/database.rs @@ -1,3 +1,4 @@ +use crate::migrate; use console::style; use dialoguer::Confirm; use sqlx::any::Any; @@ -30,3 +31,13 @@ pub async fn drop(uri: &str, confirm: bool) -> anyhow::Result<()> { Ok(()) } + +pub async fn reset(uri: &str, confirm: bool) -> anyhow::Result<()> { + drop(uri, confirm).await?; + setup(uri).await +} + +pub async fn setup(uri: &str) -> anyhow::Result<()> { + create(uri).await?; + migrate::run(uri).await +} diff --git a/sqlx-cli/src/lib.rs b/sqlx-cli/src/lib.rs index 40bd0917..3da90e03 100644 --- a/sqlx-cli/src/lib.rs +++ b/sqlx-cli/src/lib.rs @@ -39,11 +39,8 @@ hint: This command only works in the manifest directory of a Cargo package."# Command::Database(database) => match database.command { DatabaseCommand::Create => database::create(&database_url).await?, DatabaseCommand::Drop { yes } => database::drop(&database_url, !yes).await?, - DatabaseCommand::Reset { yes } => { - database::drop(&database_url, yes).await?; - database::create(&database_url).await?; - migrate::run(&database_url).await?; - } + DatabaseCommand::Reset { yes } => database::reset(&database_url, yes).await?, + DatabaseCommand::Setup => database::setup(&database_url).await?, }, Command::Prepare { check: false, args } => prepare::run(&database_url, args)?, diff --git a/sqlx-cli/src/opt.rs b/sqlx-cli/src/opt.rs index 0a0cc928..9525e928 100644 --- a/sqlx-cli/src/opt.rs +++ b/sqlx-cli/src/opt.rs @@ -64,6 +64,8 @@ pub enum DatabaseCommand { #[clap(short)] yes: bool, }, + /// Creates the database specified in your DATABASE_URL and runs any pending migrations. + Setup, } /// Group of commands for creating and running migrations.