fix: update SQLite connection options for network paths

This commit is contained in:
t8y2 2026-05-04 21:45:16 +08:00
parent f761e5530f
commit b9e29b423f
1 changed files with 9 additions and 1 deletions

View File

@ -5,10 +5,14 @@ use std::time::{Duration, Instant};
use super::{ColumnInfo, DatabaseInfo, ForeignKeyInfo, IndexInfo, QueryResult, TableInfo, TriggerInfo};
pub async fn connect_path(path: &str) -> Result<SqlitePool, String> {
let options = SqliteConnectOptions::new()
let mut options = SqliteConnectOptions::new()
.filename(path)
.create_if_missing(true);
if is_network_path(path) {
options = options.vfs("unix-nolock");
}
SqlitePoolOptions::new()
.max_connections(5)
.acquire_timeout(Duration::from_secs(10))
@ -18,6 +22,10 @@ pub async fn connect_path(path: &str) -> Result<SqlitePool, String> {
.map_err(|e| format!("SQLite connection failed: {e}"))
}
fn is_network_path(path: &str) -> bool {
path.starts_with("\\\\") || path.starts_with("//") || path.contains("wsl.localhost") || path.contains("wsl$")
}
pub async fn list_databases(_pool: &SqlitePool) -> Result<Vec<DatabaseInfo>, String> {
Ok(vec![DatabaseInfo { name: "main".to_string() }])
}