fix: consume shared workdir create contract

This commit is contained in:
2026-09-01 02:14:57 +09:00
parent 88e3bf7065
commit 21eea0b104
2 changed files with 10 additions and 15 deletions
@@ -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 {
+6 -3
View File
@@ -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]