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)
|
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())?
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user