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
|
@ -45,7 +45,7 @@ node_runtime.workspace = true
|
|||
parking_lot.workspace = true
|
||||
postage.workspace = true
|
||||
project.workspace = true
|
||||
remote_projects.workspace = true
|
||||
dev_server_projects.workspace = true
|
||||
task.workspace = true
|
||||
schemars.workspace = true
|
||||
serde.workspace = true
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ use super::SerializedAxis;
|
|||
use crate::{item::ItemHandle, ItemDeserializers, Member, Pane, PaneAxis, Workspace, WorkspaceId};
|
||||
use anyhow::{Context, Result};
|
||||
use async_recursion::async_recursion;
|
||||
use client::RemoteProjectId;
|
||||
use client::DevServerProjectId;
|
||||
use db::sqlez::{
|
||||
bindable::{Bind, Column, StaticColumnCount},
|
||||
statement::Statement,
|
||||
|
@ -18,8 +18,8 @@ use util::ResultExt;
|
|||
use uuid::Uuid;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
|
||||
pub struct SerializedRemoteProject {
|
||||
pub id: RemoteProjectId,
|
||||
pub struct SerializedDevServerProject {
|
||||
pub id: DevServerProjectId,
|
||||
pub dev_server_name: String,
|
||||
pub path: String,
|
||||
}
|
||||
|
@ -68,14 +68,14 @@ impl Column for LocalPaths {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<SerializedRemoteProject> for SerializedWorkspaceLocation {
|
||||
fn from(remote_project: SerializedRemoteProject) -> Self {
|
||||
Self::Remote(remote_project)
|
||||
impl From<SerializedDevServerProject> for SerializedWorkspaceLocation {
|
||||
fn from(dev_server_project: SerializedDevServerProject) -> Self {
|
||||
Self::DevServer(dev_server_project)
|
||||
}
|
||||
}
|
||||
|
||||
impl StaticColumnCount for SerializedRemoteProject {}
|
||||
impl Bind for &SerializedRemoteProject {
|
||||
impl StaticColumnCount for SerializedDevServerProject {}
|
||||
impl Bind for &SerializedDevServerProject {
|
||||
fn bind(&self, statement: &Statement, start_index: i32) -> Result<i32> {
|
||||
let next_index = statement.bind(&self.id.0, start_index)?;
|
||||
let next_index = statement.bind(&self.dev_server_name, next_index)?;
|
||||
|
@ -83,14 +83,14 @@ impl Bind for &SerializedRemoteProject {
|
|||
}
|
||||
}
|
||||
|
||||
impl Column for SerializedRemoteProject {
|
||||
impl Column for SerializedDevServerProject {
|
||||
fn column(statement: &mut Statement, start_index: i32) -> Result<(Self, i32)> {
|
||||
let id = statement.column_int64(start_index)?;
|
||||
let dev_server_name = statement.column_text(start_index + 1)?.to_string();
|
||||
let path = statement.column_text(start_index + 2)?.to_string();
|
||||
Ok((
|
||||
Self {
|
||||
id: RemoteProjectId(id as u64),
|
||||
id: DevServerProjectId(id as u64),
|
||||
dev_server_name,
|
||||
path,
|
||||
},
|
||||
|
@ -102,7 +102,7 @@ impl Column for SerializedRemoteProject {
|
|||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub enum SerializedWorkspaceLocation {
|
||||
Local(LocalPaths),
|
||||
Remote(SerializedRemoteProject),
|
||||
DevServer(SerializedDevServerProject),
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
|
|
|
@ -47,7 +47,7 @@ pub use pane::*;
|
|||
pub use pane_group::*;
|
||||
use persistence::{model::SerializedWorkspace, SerializedWindowsBounds, DB};
|
||||
pub use persistence::{
|
||||
model::{ItemId, LocalPaths, SerializedRemoteProject, SerializedWorkspaceLocation},
|
||||
model::{ItemId, LocalPaths, SerializedDevServerProject, SerializedWorkspaceLocation},
|
||||
WorkspaceDb, DB as WORKSPACE_DB,
|
||||
};
|
||||
use postage::stream::Stream;
|
||||
|
@ -3644,18 +3644,19 @@ impl Workspace {
|
|||
} else {
|
||||
None
|
||||
}
|
||||
} else if let Some(remote_project_id) = self.project().read(cx).remote_project_id() {
|
||||
let store = remote_projects::Store::global(cx).read(cx);
|
||||
} else if let Some(dev_server_project_id) = self.project().read(cx).dev_server_project_id()
|
||||
{
|
||||
let store = dev_server_projects::Store::global(cx).read(cx);
|
||||
maybe!({
|
||||
let project = store.remote_project(remote_project_id)?;
|
||||
let project = store.dev_server_project(dev_server_project_id)?;
|
||||
let dev_server = store.dev_server(project.dev_server_id)?;
|
||||
|
||||
let remote_project = SerializedRemoteProject {
|
||||
id: remote_project_id,
|
||||
let dev_server_project = SerializedDevServerProject {
|
||||
id: dev_server_project_id,
|
||||
dev_server_name: dev_server.name.to_string(),
|
||||
path: project.path.to_string(),
|
||||
};
|
||||
Some(SerializedWorkspaceLocation::Remote(remote_project))
|
||||
Some(SerializedWorkspaceLocation::DevServer(dev_server_project))
|
||||
})
|
||||
} else {
|
||||
None
|
||||
|
@ -4537,7 +4538,7 @@ async fn join_channel_internal(
|
|||
return None;
|
||||
}
|
||||
let project = workspace.project.read(cx);
|
||||
if (project.is_local() || project.remote_project_id().is_some())
|
||||
if (project.is_local() || project.dev_server_project_id().is_some())
|
||||
&& project.visible_worktrees(cx).any(|tree| {
|
||||
tree.read(cx)
|
||||
.root_entry()
|
||||
|
@ -4883,7 +4884,7 @@ pub fn join_hosted_project(
|
|||
})
|
||||
}
|
||||
|
||||
pub fn join_remote_project(
|
||||
pub fn join_dev_server_project(
|
||||
project_id: ProjectId,
|
||||
app_state: Arc<AppState>,
|
||||
window_to_replace: Option<WindowHandle<Workspace>>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue