fix: fix same name error
This commit is contained in:
parent
9872a9a5b0
commit
9f3b3bc63f
@ -37,6 +37,7 @@ struct Anniversary {
|
|||||||
title: String,
|
title: String,
|
||||||
start_date: String,
|
start_date: String,
|
||||||
days: i64,
|
days: i64,
|
||||||
|
days_display: String,
|
||||||
}
|
}
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
async fn get_anniversaries(app_handle: tauri::AppHandle) -> Result<Vec<Anniversary>, String> {
|
async fn get_anniversaries(app_handle: tauri::AppHandle) -> Result<Vec<Anniversary>, String> {
|
||||||
@ -60,16 +61,28 @@ async fn get_anniversaries(app_handle: tauri::AppHandle) -> Result<Vec<Anniversa
|
|||||||
let title: String = row.get(1)?;
|
let title: String = row.get(1)?;
|
||||||
let start_date: String = row.get(2)?;
|
let start_date: String = row.get(2)?;
|
||||||
|
|
||||||
// 计算天数
|
// 计算天数,跳过无效日期
|
||||||
let start = NaiveDate::parse_from_str(&start_date, "%Y-%m-%d")
|
let (days, days_display) = match NaiveDate::parse_from_str(&start_date, "%Y-%m-%d") {
|
||||||
.map_err(|e| rusqlite::Error::InvalidParameterName(e.to_string()))?;
|
Ok(start) => {
|
||||||
let days = (today - start).num_days();
|
let diff = (today - start).num_days();
|
||||||
|
let display = if diff < 0 {
|
||||||
|
format!("还有{}天", -diff)
|
||||||
|
} else if diff == 0 {
|
||||||
|
"今天".to_string()
|
||||||
|
} else {
|
||||||
|
format!("{}天前", diff)
|
||||||
|
};
|
||||||
|
(diff, display)
|
||||||
|
},
|
||||||
|
Err(_) => (0, "无效日期".to_string()), // 如果日期格式无效
|
||||||
|
};
|
||||||
|
|
||||||
Ok(Anniversary {
|
Ok(Anniversary {
|
||||||
id,
|
id,
|
||||||
title,
|
title,
|
||||||
start_date,
|
start_date,
|
||||||
days,
|
days,
|
||||||
|
days_display,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.map_err(|e| e.to_string())?;
|
.map_err(|e| e.to_string())?;
|
||||||
@ -101,16 +114,28 @@ async fn get_anniversary_by_id(
|
|||||||
let title: String = row.get(0)?;
|
let title: String = row.get(0)?;
|
||||||
let start_date: String = row.get(1)?;
|
let start_date: String = row.get(1)?;
|
||||||
|
|
||||||
// 计算天数
|
// 计算天数,跳过无效日期
|
||||||
let start = NaiveDate::parse_from_str(&start_date, "%Y-%m-%d")
|
let (days, days_display) = match NaiveDate::parse_from_str(&start_date, "%Y-%m-%d") {
|
||||||
.map_err(|e| rusqlite::Error::InvalidParameterName(e.to_string()))?;
|
Ok(start) => {
|
||||||
let days = (today - start).num_days();
|
let diff = (today - start).num_days();
|
||||||
|
let display = if diff < 0 {
|
||||||
|
format!("还有{}天", -diff)
|
||||||
|
} else if diff == 0 {
|
||||||
|
"今天".to_string()
|
||||||
|
} else {
|
||||||
|
format!("{}天前", diff)
|
||||||
|
};
|
||||||
|
(diff, display)
|
||||||
|
},
|
||||||
|
Err(_) => (0, "无效日期".to_string()), // 如果日期格式无效
|
||||||
|
};
|
||||||
|
|
||||||
Ok(Anniversary {
|
Ok(Anniversary {
|
||||||
id,
|
id,
|
||||||
title,
|
title,
|
||||||
start_date,
|
start_date,
|
||||||
days,
|
days,
|
||||||
|
days_display,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.map_err(|e| e.to_string())?;
|
.map_err(|e| e.to_string())?;
|
||||||
@ -139,13 +164,39 @@ async fn add_anniversary(
|
|||||||
title: String,
|
title: String,
|
||||||
start_date: String,
|
start_date: String,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
// 主页添加
|
// 输入验证
|
||||||
|
if title.trim().is_empty() {
|
||||||
|
return Err("标题不能为空".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
if start_date.trim().is_empty() {
|
||||||
|
return Err("日期不能为空".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证日期格式
|
||||||
|
NaiveDate::parse_from_str(&start_date, "%Y-%m-%d")
|
||||||
|
.map_err(|_| "日期格式无效,请使用 YYYY-MM-DD 格式".to_string())?;
|
||||||
|
|
||||||
let app_dir = app_handle
|
let app_dir = app_handle
|
||||||
.path()
|
.path()
|
||||||
.app_data_dir()
|
.app_data_dir()
|
||||||
.map_err(|e| e.to_string())?;
|
.map_err(|e| e.to_string())?;
|
||||||
let db_path = app_dir.join("anniversaries.db");
|
let db_path = app_dir.join("anniversaries.db");
|
||||||
let conn = Connection::open(db_path).map_err(|e| e.to_string())?;
|
let conn = Connection::open(db_path).map_err(|e| e.to_string())?;
|
||||||
|
|
||||||
|
// 检查重复
|
||||||
|
let mut stmt = conn
|
||||||
|
.prepare("SELECT COUNT(*) FROM anniversaries WHERE title = ? AND start_date = ?")
|
||||||
|
.map_err(|e| e.to_string())?;
|
||||||
|
|
||||||
|
let count: i64 = stmt
|
||||||
|
.query_row([&title, &start_date], |row| row.get(0))
|
||||||
|
.map_err(|e| e.to_string())?;
|
||||||
|
|
||||||
|
if count > 0 {
|
||||||
|
return Err("相同的纪念日已存在".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"INSERT INTO anniversaries (title, start_date) VALUES (?1, ?2)",
|
"INSERT INTO anniversaries (title, start_date) VALUES (?1, ?2)",
|
||||||
[&title, &start_date],
|
[&title, &start_date],
|
||||||
|
@ -8,6 +8,7 @@ interface Anniversary {
|
|||||||
title: string;
|
title: string;
|
||||||
start_date: string;
|
start_date: string;
|
||||||
days: number;
|
days: number;
|
||||||
|
days_display: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function DetailPage() {
|
function DetailPage() {
|
||||||
@ -18,6 +19,7 @@ function DetailPage() {
|
|||||||
title: "",
|
title: "",
|
||||||
start_date: "",
|
start_date: "",
|
||||||
days: 0,
|
days: 0,
|
||||||
|
days_display: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -56,7 +58,7 @@ function DetailPage() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="card">
|
<div className="card">
|
||||||
<h1 className="title">{anniversary.title}</h1>
|
<h1 className="title">{anniversary.title}</h1>
|
||||||
<div className="days">{anniversary.days}</div>
|
<div className="days">{anniversary.days_display}</div>
|
||||||
<div className="start-date">Start Date: {anniversary.start_date}</div>
|
<div className="start-date">Start Date: {anniversary.start_date}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,6 +8,7 @@ interface Anniversary {
|
|||||||
title: string;
|
title: string;
|
||||||
start_date: string;
|
start_date: string;
|
||||||
days: number;
|
days: number;
|
||||||
|
days_display: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function HomePage() {
|
function HomePage() {
|
||||||
@ -48,7 +49,7 @@ function HomePage() {
|
|||||||
>
|
>
|
||||||
<div className="anniversary-title">{item.title}</div>
|
<div className="anniversary-title">{item.title}</div>
|
||||||
<div className="anniversary-info">
|
<div className="anniversary-info">
|
||||||
<span className="days-count">{item.days}</span>
|
<span className="days-count">{item.days_display}</span>
|
||||||
<span className="start-date">{item.start_date}</span>
|
<span className="start-date">{item.start_date}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user