Simplify the SerializableItem::cleanup implementation (#29567)
Release Notes: - N/A --------- Co-authored-by: Julia Ryan <juliaryan3.14@gmail.com>
This commit is contained in:
parent
17703310ae
commit
1d7c86bf0d
13 changed files with 120 additions and 200 deletions
|
@ -459,30 +459,4 @@ impl TerminalDb {
|
|||
WHERE item_id = ? AND workspace_id = ?
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn delete_unloaded_items(
|
||||
&self,
|
||||
workspace: WorkspaceId,
|
||||
alive_items: Vec<ItemId>,
|
||||
) -> Result<()> {
|
||||
let placeholders = alive_items
|
||||
.iter()
|
||||
.map(|_| "?")
|
||||
.collect::<Vec<&str>>()
|
||||
.join(", ");
|
||||
|
||||
let query = format!(
|
||||
"DELETE FROM terminals WHERE workspace_id = ? AND item_id NOT IN ({placeholders})"
|
||||
);
|
||||
|
||||
self.write(move |conn| {
|
||||
let mut statement = Statement::prepare(conn, query)?;
|
||||
let mut next_index = statement.bind(&workspace, 1)?;
|
||||
for id in alive_items {
|
||||
next_index = statement.bind(&id, next_index)?;
|
||||
}
|
||||
statement.exec()
|
||||
})
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ use ui::{
|
|||
use util::{ResultExt, debug_panic, paths::PathWithPosition};
|
||||
use workspace::{
|
||||
CloseActiveItem, NewCenterTerminal, NewTerminal, OpenOptions, OpenVisible, ToolbarItemLocation,
|
||||
Workspace, WorkspaceId,
|
||||
Workspace, WorkspaceId, delete_unloaded_items,
|
||||
item::{
|
||||
BreadcrumbText, Item, ItemEvent, SerializableItem, TabContentParams, TabTooltipContent,
|
||||
},
|
||||
|
@ -1582,14 +1582,10 @@ impl SerializableItem for TerminalView {
|
|||
fn cleanup(
|
||||
workspace_id: WorkspaceId,
|
||||
alive_items: Vec<workspace::ItemId>,
|
||||
window: &mut Window,
|
||||
_window: &mut Window,
|
||||
cx: &mut App,
|
||||
) -> Task<gpui::Result<()>> {
|
||||
window.spawn(cx, async move |_| {
|
||||
TERMINAL_DB
|
||||
.delete_unloaded_items(workspace_id, alive_items)
|
||||
.await
|
||||
})
|
||||
delete_unloaded_items(alive_items, workspace_id, "terminals", &TERMINAL_DB, cx)
|
||||
}
|
||||
|
||||
fn serialize(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue