fix: adapt cli runtime branch after rebase

This commit is contained in:
Illuminated2020
2026-05-12 17:04:18 +08:00
parent dd3894df68
commit ef83cedfb4
7 changed files with 57 additions and 43 deletions
+10 -3
View File
@@ -269,18 +269,18 @@ async fn state_with_connection(
config: dbx_core::models::connection::ConnectionConfig,
) -> Result<dbx_core::connection::AppState, String> {
let state = open_state().await?;
state.configs.lock().await.insert(config.id.clone(), config.clone());
state.configs.write().await.insert(config.id.clone(), config.clone());
match config.db_type {
dbx_core::models::connection::DatabaseType::Sqlite => {
let path = dbx_core::connection::expand_tilde(&config.host);
let pool = dbx_core::db::sqlite::connect_path(&path).await?;
state.connections.lock().await.insert(config.id.clone(), dbx_core::connection::PoolKind::Sqlite(pool));
state.connections.write().await.insert(config.id.clone(), dbx_core::connection::PoolKind::Sqlite(pool));
}
dbx_core::models::connection::DatabaseType::DuckDb => {
let path = dbx_core::connection::expand_tilde(&config.host);
let pool = dbx_core::db::duckdb_driver::connect_path(&path)?;
state.connections.lock().await.insert(config.id.clone(), dbx_core::connection::PoolKind::DuckDb(pool));
state.connections.write().await.insert(config.id.clone(), dbx_core::connection::PoolKind::DuckDb(pool));
}
_ => {
state.get_or_create_pool(&config.id, config.database.as_deref()).await?;
@@ -587,9 +587,16 @@ mod tests {
ssh_key_passphrase: "key-secret".to_string(),
ssh_expose_lan: false,
ssh_connect_timeout_secs: dbx_core::models::connection::default_ssh_connect_timeout_secs(),
proxy_enabled: false,
proxy_type: dbx_core::models::connection::ProxyType::Socks5,
proxy_host: String::new(),
proxy_port: 1080,
proxy_username: String::new(),
proxy_password: String::new(),
ssl: false,
sysdba: false,
connection_string: Some(format!("mysql://root:{password}@127.0.0.1:3306/app")),
external_config: None,
jdbc_driver_class: None,
jdbc_driver_paths: Vec::new(),
}
+1 -1
View File
@@ -41,7 +41,7 @@ pub async fn snapshot(
schema_name: Option<&str>,
) -> Result<SchemaSnapshot, String> {
let config = {
let configs = state.configs.lock().await;
let configs = state.configs.read().await;
configs.get(connection_id).cloned().ok_or("Connection config not found")?
};
+11 -4
View File
@@ -29,9 +29,16 @@ fn sqlite_config(path: &std::path::Path) -> ConnectionConfig {
ssh_key_passphrase: String::new(),
ssh_expose_lan: false,
ssh_connect_timeout_secs: default_ssh_connect_timeout_secs(),
proxy_enabled: false,
proxy_type: dbx_core::models::connection::ProxyType::Socks5,
proxy_host: String::new(),
proxy_port: 1080,
proxy_username: String::new(),
proxy_password: String::new(),
ssl: false,
sysdba: false,
connection_string: None,
external_config: None,
jdbc_driver_class: None,
jdbc_driver_paths: Vec::new(),
}
@@ -70,8 +77,8 @@ async fn snapshot_standardizes_sqlite_tables_views_and_metadata() {
let state = open_state().await;
let config = sqlite_config(&data_path);
let pool = dbx_core::db::sqlite::connect_path(&data_path.display().to_string()).await.unwrap();
state.configs.lock().await.insert(config.id.clone(), config.clone());
state.connections.lock().await.insert(config.id.clone(), PoolKind::Sqlite(pool));
state.configs.write().await.insert(config.id.clone(), config.clone());
state.connections.write().await.insert(config.id.clone(), PoolKind::Sqlite(pool));
let snapshot = snapshot(&state, &config.id, None, None).await.unwrap();
@@ -106,7 +113,7 @@ async fn snapshot_propagates_schema_core_errors() {
let data_path = std::env::temp_dir().join(format!("dbx-schema-snapshot-missing-{}.db", uuid::Uuid::new_v4()));
let state = open_state().await;
let config = sqlite_config(&data_path);
state.configs.lock().await.insert(config.id.clone(), config.clone());
state.configs.write().await.insert(config.id.clone(), config.clone());
let err = snapshot(&state, &config.id, None, None).await.unwrap_err();
@@ -124,7 +131,7 @@ async fn snapshot_requires_database_for_database_scoped_connections_without_defa
config.driver_profile = None;
config.host = "127.0.0.1".to_string();
config.port = 3306;
state.configs.lock().await.insert(config.id.clone(), config.clone());
state.configs.write().await.insert(config.id.clone(), config.clone());
let err = snapshot(&state, &config.id, None, None).await.unwrap_err();