fix: keep edited user message in history, clear only messages after it

This commit is contained in:
Xianren Studio
2026-08-13 23:50:27 +08:00
parent 95d7ff1299
commit ad0efe249c
2 changed files with 15 additions and 1 deletions
+2 -1
View File
@@ -841,7 +841,8 @@ pub async fn edit_message(
} }
sessions_db::update_message_content(&db, &payload.message_id, &payload.content) sessions_db::update_message_content(&db, &payload.message_id, &payload.content)
.map_err(|e| e.to_string())?; .map_err(|e| e.to_string())?;
sessions_db::delete_messages_after(&db, &payload.conversation_id, rowid) // 清空该提问之后的所有生成内容,保留编辑后的提问本身
sessions_db::delete_messages_strictly_after(&db, &payload.conversation_id, rowid)
.map_err(|e| e.to_string())?; .map_err(|e| e.to_string())?;
let history = sessions_db::list_messages(&db, &payload.conversation_id) let history = sessions_db::list_messages(&db, &payload.conversation_id)
.map_err(|e| e.to_string())? .map_err(|e| e.to_string())?
+13
View File
@@ -201,6 +201,19 @@ pub fn delete_messages_after(db: &Connection, conversation_id: &str, rowid: i64)
Ok(()) Ok(())
} }
/// 删除某条消息之后(不含该消息)的所有消息。
pub fn delete_messages_strictly_after(
db: &Connection,
conversation_id: &str,
rowid: i64,
) -> Result<()> {
db.execute(
"DELETE FROM messages WHERE conversation_id = ?1 AND rowid > ?2",
params![conversation_id, rowid],
)?;
Ok(())
}
pub fn save_message_version( pub fn save_message_version(
db: &Connection, db: &Connection,
message_id: &str, message_id: &str,