(
State(state): State<Arc<ServerState>>,
Extension(open_code_dir): Extension<OpenCodeDirectory>,
Query(query): Query<CreateSessionQuery>,
Json(req): Json<CreateSessionRequest>,
)
| 386 | } |
| 387 | |
| 388 | async fn create_session( |
| 389 | State(state): State<Arc<ServerState>>, |
| 390 | Extension(open_code_dir): Extension<OpenCodeDirectory>, |
| 391 | Query(query): Query<CreateSessionQuery>, |
| 392 | Json(req): Json<CreateSessionRequest>, |
| 393 | ) -> Result<Json<SessionInfo>> { |
| 394 | let directory = query |
| 395 | .directory |
| 396 | .filter(|d| !d.is_empty()) |
| 397 | .or_else(|| open_code_dir.0.clone()) |
| 398 | .unwrap_or_else(|| { |
| 399 | std::env::current_dir() |
| 400 | .map(|p| p.to_string_lossy().to_string()) |
| 401 | .unwrap_or_else(|_| ".".to_string()) |
| 402 | }); |
| 403 | let session = if let Some(parent_id) = &req.parent_id { |
| 404 | state |
| 405 | .sessions |
| 406 | .lock() |
| 407 | .await |
| 408 | .create_child(parent_id) |
| 409 | .ok_or_else(|| ApiError::SessionNotFound(parent_id.clone()))? |
| 410 | } else { |
| 411 | state.sessions.lock().await.create("default", directory) |
| 412 | }; |
| 413 | persist_sessions_if_enabled(&state).await; |
| 414 | Ok(Json(session_to_info(&session))) |
| 415 | } |
| 416 | |
| 417 | async fn get_session( |
| 418 | State(state): State<Arc<ServerState>>, |
nothing calls this directly
no test coverage detected