Skip to content

Commit 52344af

Browse files
committed
Refactor GraphQL query to use singular fetch for expert data
1 parent 4da4a0e commit 52344af

1 file changed

Lines changed: 9 additions & 23 deletions

File tree

refact-agent/engine/src/cloud/experts_req.rs

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,10 @@ pub async fn get_expert(
6464
expert_name: &str
6565
) -> Result<Expert, String> {
6666
let client = Client::new();
67-
let (api_key, located_fgroup_id) = {
68-
let gcx_read = gcx.read().await;
69-
(gcx_read.cmdline.api_key.clone(),
70-
gcx_read.active_group_id.clone().unwrap_or_default())
71-
};
67+
let api_key = gcx.read().await.cmdline.api_key.clone();
7268
let query = r#"
73-
query GetExpert($located_fgroup_id: String!) {
74-
experts_effective_list(located_fgroup_id: $located_fgroup_id) {
69+
query GetExpert($id: String!) {
70+
expert_get(id: $id) {
7571
owner_fuser_id
7672
owner_shared
7773
located_fgroup_id
@@ -89,8 +85,8 @@ pub async fn get_expert(
8985
.header("Content-Type", "application/json")
9086
.json(&json!({
9187
"query": query,
92-
"variables": {
93-
"located_fgroup_id": located_fgroup_id
88+
"variables": {
89+
"id": expert_name
9490
}
9591
}))
9692
.send()
@@ -110,20 +106,10 @@ pub async fn get_expert(
110106
return Err(format!("GraphQL error: {}", error_msg));
111107
}
112108
if let Some(data) = response_json.get("data") {
113-
if let Some(expert_list) = data.get("experts_effective_list") {
114-
if let Some(experts) = expert_list.as_array() {
115-
if experts.len() > 1 {
116-
tracing::warn!(
117-
"multiple experts found for group ID {} with expert_name {}, this might cause inconsistent behavior",
118-
located_fgroup_id, expert_name
119-
)
120-
}
121-
for expert_value in experts {
122-
let expert: Expert = serde_json::from_value(expert_value.clone())
123-
.map_err(|e| format!("Failed to parse expert: {}", e))?;
124-
return Ok(expert);
125-
}
126-
}
109+
if let Some(expert_value) = data.get("expert_get") {
110+
let expert: Expert = serde_json::from_value(expert_value.clone())
111+
.map_err(|e| format!("Failed to parse expert: {}", e))?;
112+
return Ok(expert);
127113
}
128114
}
129115
Err(format!(

0 commit comments

Comments
 (0)