Skip to content

Commit b92539e

Browse files
committed
update
1 parent 160c5f0 commit b92539e

File tree

2 files changed

+26
-16
lines changed

2 files changed

+26
-16
lines changed

crates/rs-pkg/src/x/storage/sql.rs

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,22 @@ impl SqliteClient {
2222
Self::new(None, None).await
2323
}
2424

25-
pub async fn new(db_name: Option<&str>, migrations: Option<&str>) -> Self {
25+
pub async fn new(db_url: Option<&str>, migrations: Option<&str>) -> Self {
2626
// let mut _root_dir = tauri::api::path::document_dir();
2727

2828
// sqlite:tmp/app.db
29-
// let url = env::var("").unwrap_or(util::app_cfg::get_local_sqlite_url(Some(db_name)));
30-
let db_url = util::fmt_local_sqlite_url(db_name);
29+
let url = db_url.unwrap_or(util::local_sqlite_url(None));
3130

3231
// todo x: 仅用于创建 db 文件
33-
let _ = SqliteConnectOptions::from_str(&db_url)
32+
let _ = SqliteConnectOptions::from_str(&url)
3433
.unwrap()
3534
.create_if_missing(true)
3635
.connect()
3736
.await
3837
.expect("connect to sqlite failed");
3938

4039
// connect pool
41-
let cli = SqlitePoolOptions::new().min_connections(2).connect(&db_url).await;
40+
let cli = SqlitePoolOptions::new().min_connections(2).connect(&url).await;
4241

4342
match cli {
4443
Ok(c) => {
@@ -78,21 +77,26 @@ impl SqliteClient {
7877
pub mod util {
7978
use std::{env, path::PathBuf};
8079

81-
pub fn local_tmp_dir() -> PathBuf {
82-
let tmp_local = "tmp";
83-
80+
pub fn local_dir(folder: Option<&str>) -> PathBuf {
8481
let mut current_dir = env::current_dir().expect("get current directory failed");
85-
let tmp_dir = current_dir.join(tmp_local);
86-
if !tmp_dir.exists() {
87-
std::fs::create_dir(&tmp_dir).expect("create tmp dir failed");
82+
83+
let dest_dir = current_dir.join(folder.unwrap_or("tmp"));
84+
if !dest_dir.exists() {
85+
std::fs::create_dir(&dest_dir).expect("create tmp dir failed");
8886
}
89-
tmp_dir
87+
dest_dir
9088
}
9189

92-
pub fn fmt_local_sqlite_url(db_name: Option<&str>) -> String {
90+
pub fn local_sqlite_url(db_name: Option<&str>) -> &str {
9391
let fp = db_name.unwrap_or("app.db");
94-
let prefix = "sqlite:";
95-
format!("{}{}", prefix, local_tmp_dir().join(fp).to_str().unwrap())
92+
let mut prefix = "sqlite:";
93+
94+
// get or create:
95+
let d = local_dir(None);
96+
97+
// return db url
98+
let db_url = format!("{}{}", prefix, d.join(fp).to_str().unwrap());
99+
Box::leak(db_url.into_boxed_str())
96100
}
97101

98102
#[cfg(test)]
@@ -105,7 +109,7 @@ pub mod util {
105109

106110
// iter
107111
for case in cases.iter() {
108-
let url = fmt_local_sqlite_url(*case);
112+
let url = local_sqlite_url(*case);
109113
println!("url: {}", url);
110114
}
111115
}
@@ -121,5 +125,11 @@ mod test {
121125
#[tokio::test]
122126
async fn test_new_sqlite_client() {
123127
let db = SqliteClient::default().await;
128+
129+
let cases = ["tmp/test1.db", "tmp/test2.db"];
130+
131+
for item in cases.iter() {
132+
let _ = SqliteClient::new(Some(item), None).await;
133+
}
124134
}
125135
}

crates/rs-tauri-vue/src-tauri/src/util/storage.rs

Whitespace-only changes.

0 commit comments

Comments
 (0)