Fix bugs resulting from refactoring the terminal into project and workspace halves

This commit is contained in:
Mikayla Maki 2022-12-08 15:18:24 -08:00
parent 83aefffa38
commit 2733f91d8c
7 changed files with 101 additions and 76 deletions

View file

@ -1,20 +1,18 @@
use std::path::PathBuf;
use db::{define_connection, query, sqlez_macros::sql};
use workspace::{WorkspaceDb, WorkspaceId};
type ModelId = usize;
use workspace::{ItemId, WorkspaceDb, WorkspaceId};
define_connection! {
pub static ref TERMINAL_DB: TerminalDb<WorkspaceDb> =
&[sql!(
CREATE TABLE terminals (
workspace_id INTEGER,
model_id INTEGER UNIQUE,
item_id INTEGER UNIQUE,
working_directory BLOB,
PRIMARY KEY(workspace_id, model_id),
PRIMARY KEY(workspace_id, item_id),
FOREIGN KEY(workspace_id) REFERENCES workspaces(workspace_id)
ON DELETE CASCADE
ON DELETE CASCADE
) STRICT;
)];
}
@ -24,7 +22,7 @@ impl TerminalDb {
pub async fn update_workspace_id(
new_id: WorkspaceId,
old_id: WorkspaceId,
item_id: ModelId
item_id: ItemId
) -> Result<()> {
UPDATE terminals
SET workspace_id = ?
@ -34,8 +32,8 @@ impl TerminalDb {
query! {
pub async fn save_working_directory(
item_id: ModelId,
workspace_id: i64,
item_id: ItemId,
workspace_id: WorkspaceId,
working_directory: PathBuf
) -> Result<()> {
INSERT OR REPLACE INTO terminals(item_id, workspace_id, working_directory)
@ -44,10 +42,10 @@ impl TerminalDb {
}
query! {
pub fn get_working_directory(item_id: ModelId, workspace_id: WorkspaceId) -> Result<Option<PathBuf>> {
SELECT working_directory
FROM terminals
pub async fn take_working_directory(item_id: ItemId, workspace_id: WorkspaceId) -> Result<Option<PathBuf>> {
DELETE FROM terminals
WHERE item_id = ? AND workspace_id = ?
RETURNING working_directory
}
}
}