[router] conversation item API: create, retrieve and delete (#11369)

This commit is contained in:
Keyang Ru
2025-10-09 14:43:16 -07:00
committed by GitHub
parent 44cb060785
commit eb7d9261c0
12 changed files with 1595 additions and 215 deletions

View File

@@ -440,6 +440,47 @@ async fn v1_conversations_list_items(
.await
}
#[derive(Deserialize, Default)]
struct GetItemQuery {
/// Additional fields to include in response (not yet implemented)
include: Option<Vec<String>>,
}
async fn v1_conversations_create_items(
State(state): State<Arc<AppState>>,
Path(conversation_id): Path<String>,
headers: http::HeaderMap,
Json(body): Json<Value>,
) -> Response {
state
.router
.create_conversation_items(Some(&headers), &conversation_id, &body)
.await
}
async fn v1_conversations_get_item(
State(state): State<Arc<AppState>>,
Path((conversation_id, item_id)): Path<(String, String)>,
Query(query): Query<GetItemQuery>,
headers: http::HeaderMap,
) -> Response {
state
.router
.get_conversation_item(Some(&headers), &conversation_id, &item_id, query.include)
.await
}
async fn v1_conversations_delete_item(
State(state): State<Arc<AppState>>,
Path((conversation_id, item_id)): Path<(String, String)>,
headers: http::HeaderMap,
) -> Response {
state
.router
.delete_conversation_item(Some(&headers), &conversation_id, &item_id)
.await
}
#[derive(Deserialize)]
struct AddWorkerQuery {
url: String,
@@ -716,7 +757,11 @@ pub fn build_app(
)
.route(
"/v1/conversations/{conversation_id}/items",
get(v1_conversations_list_items),
get(v1_conversations_list_items).post(v1_conversations_create_items),
)
.route(
"/v1/conversations/{conversation_id}/items/{item_id}",
get(v1_conversations_get_item).delete(v1_conversations_delete_item),
)
.route_layer(axum::middleware::from_fn_with_state(
app_state.clone(),