fix: consume shared workdir create contract
This commit is contained in:
@@ -21,6 +21,8 @@ use workdir::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use workspace_api::{
|
use workspace_api::{
|
||||||
|
WorkingDirectoryCreateRequest as WorkdirCreateRequest,
|
||||||
|
WorkingDirectoryCreateResponse as WorkdirCreateResponse,
|
||||||
WorkingDirectoryDetailResponse as WorkdirDetailResponse,
|
WorkingDirectoryDetailResponse as WorkdirDetailResponse,
|
||||||
WorkingDirectoryListResponse as WorkdirListResponse,
|
WorkingDirectoryListResponse as WorkdirListResponse,
|
||||||
};
|
};
|
||||||
@@ -421,9 +423,9 @@ impl WorkspaceHttpWorkdirBackend {
|
|||||||
runtime_id: runtime_id.map(str::to_string),
|
runtime_id: runtime_id.map(str::to_string),
|
||||||
repository_id: repository_id.to_string(),
|
repository_id: repository_id.to_string(),
|
||||||
selector,
|
selector,
|
||||||
operation_id,
|
operation_id: Some(operation_id),
|
||||||
};
|
};
|
||||||
let response = self.execute_json::<WorkdirDetailResponse>(WorkspaceRequest::json(
|
let response = self.execute_json::<WorkdirCreateResponse>(WorkspaceRequest::json(
|
||||||
WorkspaceRequestMethod::Post,
|
WorkspaceRequestMethod::Post,
|
||||||
format!("/api/w/{workspace_id}/working-directories"),
|
format!("/api/w/{workspace_id}/working-directories"),
|
||||||
serde_json::to_string(&request).map_err(decode_error)?,
|
serde_json::to_string(&request).map_err(decode_error)?,
|
||||||
@@ -702,16 +704,6 @@ struct WorkdirCreateInput {
|
|||||||
selector: Option<String>,
|
selector: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
|
||||||
struct WorkdirCreateRequest {
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
runtime_id: Option<String>,
|
|
||||||
repository_id: String,
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
|
||||||
selector: Option<String>,
|
|
||||||
operation_id: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(deny_unknown_fields)]
|
#[serde(deny_unknown_fields)]
|
||||||
struct WorkdirAttachInput {
|
struct WorkdirAttachInput {
|
||||||
|
|||||||
@@ -209,12 +209,12 @@ pub struct WorkingDirectorySummary {
|
|||||||
#[cfg_attr(feature = "typescript", ts(optional_fields = nullable))]
|
#[cfg_attr(feature = "typescript", ts(optional_fields = nullable))]
|
||||||
#[serde(deny_unknown_fields)]
|
#[serde(deny_unknown_fields)]
|
||||||
pub struct WorkingDirectoryCreateRequest {
|
pub struct WorkingDirectoryCreateRequest {
|
||||||
#[serde(default)]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub runtime_id: Option<String>,
|
pub runtime_id: Option<String>,
|
||||||
pub repository_id: String,
|
pub repository_id: String,
|
||||||
#[serde(default)]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub selector: Option<String>,
|
pub selector: Option<String>,
|
||||||
#[serde(default)]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub operation_id: Option<String>,
|
pub operation_id: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -765,6 +765,9 @@ mod tests {
|
|||||||
assert_eq!(request.runtime_id, None);
|
assert_eq!(request.runtime_id, None);
|
||||||
assert_eq!(request.selector, None);
|
assert_eq!(request.selector, None);
|
||||||
assert_eq!(request.operation_id, None);
|
assert_eq!(request.operation_id, None);
|
||||||
|
|
||||||
|
let serialized = serde_json::to_value(request).expect("serialize create request");
|
||||||
|
assert_eq!(serialized, serde_json::json!({"repository_id": "main"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user