/
germanubis
/
sqlx
ΠΠ±Π·ΠΎΡ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠΎΠΉΡΠΈ
/
germanubis
/
sqlx
ΠΠΎΠ΄
ΠΠ°ΠΏΡΠΎΡΡ
0
ΠΠ°Π΄Π°ΡΠΈ
ΠΠΈΠΊΠΈ
ΠΠ°ΠΊΠ΅ΡΡ
0
Π Π΅Π»ΠΈΠ·Ρ
0
ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ°
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
v0.5.8
sqlx-cli/src/database.rs
60 ΡΡΡΠΎΠΊ
2 KB
David James
Use promptly instead of dialoguer (#1410)
31 Π°Π²Π³ 2021, 00:10
ΠΠ΅ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½
31 Π°Π²Π³ 2021, 00:10
ad81e35
ΠΠΎΠ΄
ΠΠ²ΡΠΎΡΡΡΠ²ΠΎ
Π ΡΡΠΌ ΠΊΠΎΠ΄?
use crate::migrate; use console::style; use promptly::{prompt, ReadlineError}; use sqlx::any::Any; use sqlx::migrate::MigrateDatabase; pub async fn create(uri: &str) -> anyhow::Result<()> { if !Any::database_exists(uri).await? { Any::create_database(uri).await?; } Ok(()) } pub async fn drop(uri: &str, confirm: bool) -> anyhow::Result<()> { if confirm && !ask_to_continue(uri) { return Ok(()); } if Any::database_exists(uri).await? { Any::drop_database(uri).await?; } Ok(()) } pub async fn reset(migration_source: &str, uri: &str, confirm: bool) -> anyhow::Result<()> { drop(uri, confirm).await?; setup(migration_source, uri).await } pub async fn setup(migration_source: &str, uri: &str) -> anyhow::Result<()> { create(uri).await?; migrate::run(migration_source, uri, false, false).await } fn ask_to_continue(uri: &str) -> bool { loop { let r: Result<String, ReadlineError> = prompt(format!("Drop database at {}? (y/n)", style(uri).cyan())); match r { Ok(response) => { if response == "n" || response == "N" { return false; } else if response == "y" || response == "Y" { return true; } else { println!( "Response not recognized: {}\nPlease type 'y' or 'n' and press enter.", response ); } } Err(e) => { println!("{}", e); return false; } } } }