fix: keep edited user message in history, clear only messages after it
This commit is contained in:
@@ -841,7 +841,8 @@ pub async fn edit_message(
|
||||
}
|
||||
sessions_db::update_message_content(&db, &payload.message_id, &payload.content)
|
||||
.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())?;
|
||||
let history = sessions_db::list_messages(&db, &payload.conversation_id)
|
||||
.map_err(|e| e.to_string())?
|
||||
|
||||
@@ -201,6 +201,19 @@ pub fn delete_messages_after(db: &Connection, conversation_id: &str, rowid: i64)
|
||||
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(
|
||||
db: &Connection,
|
||||
message_id: &str,
|
||||
|
||||
Reference in New Issue
Block a user