Rename RemoteProject -> DevServerProject (#11301)
Co-Authored-By: Mikayla <mikayla@zed.dev> In a fit of ill-advisedness I called these things remote projects; forgetting that remote project is also what we call collaboratively shared projects. Release Notes: - N/A --------- Co-authored-by: Mikayla <mikayla@zed.dev> Co-authored-by: Bennet <bennetbo@gmx.de>
This commit is contained in:
parent
d61c47d2a9
commit
9bac64a9c1
46 changed files with 834 additions and 771 deletions
|
@ -3,7 +3,7 @@ pub mod model;
|
|||
use std::path::Path;
|
||||
|
||||
use anyhow::{anyhow, bail, Context, Result};
|
||||
use client::RemoteProjectId;
|
||||
use client::DevServerProjectId;
|
||||
use db::{define_connection, query, sqlez::connection::Connection, sqlez_macros::sql};
|
||||
use gpui::{point, size, Axis, Bounds};
|
||||
|
||||
|
@ -22,7 +22,7 @@ use model::{
|
|||
SerializedWorkspace,
|
||||
};
|
||||
|
||||
use self::model::{DockStructure, SerializedRemoteProject, SerializedWorkspaceLocation};
|
||||
use self::model::{DockStructure, SerializedDevServerProject, SerializedWorkspaceLocation};
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub(crate) struct SerializedAxis(pub(crate) gpui::Axis);
|
||||
|
@ -299,6 +299,16 @@ define_connection! {
|
|||
ALTER TABLE workspaces ADD COLUMN remote_project_id INTEGER;
|
||||
ALTER TABLE workspaces RENAME COLUMN workspace_location TO local_paths;
|
||||
),
|
||||
sql!(
|
||||
DROP TABLE remote_projects;
|
||||
CREATE TABLE dev_server_projects (
|
||||
id INTEGER NOT NULL UNIQUE,
|
||||
path TEXT,
|
||||
dev_server_name TEXT
|
||||
);
|
||||
ALTER TABLE workspaces DROP COLUMN remote_project_id;
|
||||
ALTER TABLE workspaces ADD COLUMN dev_server_project_id INTEGER;
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -317,7 +327,7 @@ impl WorkspaceDb {
|
|||
let (
|
||||
workspace_id,
|
||||
local_paths,
|
||||
remote_project_id,
|
||||
dev_server_project_id,
|
||||
bounds,
|
||||
display,
|
||||
fullscreen,
|
||||
|
@ -337,7 +347,7 @@ impl WorkspaceDb {
|
|||
SELECT
|
||||
workspace_id,
|
||||
local_paths,
|
||||
remote_project_id,
|
||||
dev_server_project_id,
|
||||
window_state,
|
||||
window_x,
|
||||
window_y,
|
||||
|
@ -363,18 +373,18 @@ impl WorkspaceDb {
|
|||
.warn_on_err()
|
||||
.flatten()?;
|
||||
|
||||
let location = if let Some(remote_project_id) = remote_project_id {
|
||||
let remote_project: SerializedRemoteProject = self
|
||||
let location = if let Some(dev_server_project_id) = dev_server_project_id {
|
||||
let dev_server_project: SerializedDevServerProject = self
|
||||
.select_row_bound(sql! {
|
||||
SELECT remote_project_id, path, dev_server_name
|
||||
FROM remote_projects
|
||||
WHERE remote_project_id = ?
|
||||
SELECT id, path, dev_server_name
|
||||
FROM dev_server_projects
|
||||
WHERE id = ?
|
||||
})
|
||||
.and_then(|mut prepared_statement| (prepared_statement)(remote_project_id))
|
||||
.and_then(|mut prepared_statement| (prepared_statement)(dev_server_project_id))
|
||||
.context("No remote project found")
|
||||
.warn_on_err()
|
||||
.flatten()?;
|
||||
SerializedWorkspaceLocation::Remote(remote_project)
|
||||
SerializedWorkspaceLocation::DevServer(dev_server_project)
|
||||
} else if let Some(local_paths) = local_paths {
|
||||
SerializedWorkspaceLocation::Local(local_paths)
|
||||
} else {
|
||||
|
@ -447,15 +457,15 @@ impl WorkspaceDb {
|
|||
))?((workspace.id, &local_paths, workspace.docks))
|
||||
.context("Updating workspace")?;
|
||||
}
|
||||
SerializedWorkspaceLocation::Remote(remote_project) => {
|
||||
SerializedWorkspaceLocation::DevServer(dev_server_project) => {
|
||||
conn.exec_bound(sql!(
|
||||
DELETE FROM workspaces WHERE remote_project_id = ? AND workspace_id != ?
|
||||
))?((remote_project.id.0, workspace.id))
|
||||
DELETE FROM workspaces WHERE dev_server_project_id = ? AND workspace_id != ?
|
||||
))?((dev_server_project.id.0, workspace.id))
|
||||
.context("clearing out old locations")?;
|
||||
|
||||
conn.exec_bound(sql!(
|
||||
INSERT INTO remote_projects(
|
||||
remote_project_id,
|
||||
INSERT INTO dev_server_projects(
|
||||
id,
|
||||
path,
|
||||
dev_server_name
|
||||
) VALUES (?1, ?2, ?3)
|
||||
|
@ -463,13 +473,13 @@ impl WorkspaceDb {
|
|||
UPDATE SET
|
||||
path = ?2,
|
||||
dev_server_name = ?3
|
||||
))?(&remote_project)?;
|
||||
))?(&dev_server_project)?;
|
||||
|
||||
// Upsert
|
||||
conn.exec_bound(sql!(
|
||||
INSERT INTO workspaces(
|
||||
workspace_id,
|
||||
remote_project_id,
|
||||
dev_server_project_id,
|
||||
left_dock_visible,
|
||||
left_dock_active_panel,
|
||||
left_dock_zoom,
|
||||
|
@ -484,7 +494,7 @@ impl WorkspaceDb {
|
|||
VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT DO
|
||||
UPDATE SET
|
||||
remote_project_id = ?2,
|
||||
dev_server_project_id = ?2,
|
||||
left_dock_visible = ?3,
|
||||
left_dock_active_panel = ?4,
|
||||
left_dock_zoom = ?5,
|
||||
|
@ -497,7 +507,7 @@ impl WorkspaceDb {
|
|||
timestamp = CURRENT_TIMESTAMP
|
||||
))?((
|
||||
workspace.id,
|
||||
remote_project.id.0,
|
||||
dev_server_project.id.0,
|
||||
workspace.docks,
|
||||
))
|
||||
.context("Updating workspace")?;
|
||||
|
@ -523,17 +533,17 @@ impl WorkspaceDb {
|
|||
|
||||
query! {
|
||||
fn recent_workspaces() -> Result<Vec<(WorkspaceId, LocalPaths, Option<u64>)>> {
|
||||
SELECT workspace_id, local_paths, remote_project_id
|
||||
SELECT workspace_id, local_paths, dev_server_project_id
|
||||
FROM workspaces
|
||||
WHERE local_paths IS NOT NULL OR remote_project_id IS NOT NULL
|
||||
WHERE local_paths IS NOT NULL OR dev_server_project_id IS NOT NULL
|
||||
ORDER BY timestamp DESC
|
||||
}
|
||||
}
|
||||
|
||||
query! {
|
||||
fn remote_projects() -> Result<Vec<SerializedRemoteProject>> {
|
||||
SELECT remote_project_id, path, dev_server_name
|
||||
FROM remote_projects
|
||||
fn dev_server_projects() -> Result<Vec<SerializedDevServerProject>> {
|
||||
SELECT id, path, dev_server_name
|
||||
FROM dev_server_projects
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -573,14 +583,15 @@ impl WorkspaceDb {
|
|||
) -> Result<Vec<(WorkspaceId, SerializedWorkspaceLocation)>> {
|
||||
let mut result = Vec::new();
|
||||
let mut delete_tasks = Vec::new();
|
||||
let remote_projects = self.remote_projects()?;
|
||||
let dev_server_projects = self.dev_server_projects()?;
|
||||
|
||||
for (id, location, remote_project_id) in self.recent_workspaces()? {
|
||||
if let Some(remote_project_id) = remote_project_id.map(RemoteProjectId) {
|
||||
if let Some(remote_project) =
|
||||
remote_projects.iter().find(|rp| rp.id == remote_project_id)
|
||||
for (id, location, dev_server_project_id) in self.recent_workspaces()? {
|
||||
if let Some(dev_server_project_id) = dev_server_project_id.map(DevServerProjectId) {
|
||||
if let Some(dev_server_project) = dev_server_projects
|
||||
.iter()
|
||||
.find(|rp| rp.id == dev_server_project_id)
|
||||
{
|
||||
result.push((id, remote_project.clone().into()));
|
||||
result.push((id, dev_server_project.clone().into()));
|
||||
} else {
|
||||
delete_tasks.push(self.delete_workspace_by_id(id));
|
||||
}
|
||||
|
@ -607,7 +618,7 @@ impl WorkspaceDb {
|
|||
.into_iter()
|
||||
.filter_map(|(_, location)| match location {
|
||||
SerializedWorkspaceLocation::Local(local_paths) => Some(local_paths),
|
||||
SerializedWorkspaceLocation::Remote(_) => None,
|
||||
SerializedWorkspaceLocation::DevServer(_) => None,
|
||||
})
|
||||
.next())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue