| 483 | } |
| 484 | |
| 485 | pub async fn compare_runs(&self, vars: CompareRunsVars) -> Result<CompareRunsOutcome> { |
| 486 | let response = self |
| 487 | .gql_client |
| 488 | .query_with_vars_unwrap::<CompareRunsData, CompareRunsVars>( |
| 489 | include_str!("queries/CompareRuns.gql"), |
| 490 | vars, |
| 491 | ) |
| 492 | .await; |
| 493 | match response { |
| 494 | Ok(response) => Ok(CompareRunsOutcome::Success(CompareRunsResponse { |
| 495 | comparison: response.repository.paginated_compare_runs, |
| 496 | })), |
| 497 | Err(err) if err.contains_error_code("UNAUTHENTICATED") => { |
| 498 | bail!("Your session has expired, please login again using `codspeed auth login`") |
| 499 | } |
| 500 | Err(err) if err.contains_error_code("RUN_NOT_FOUND") => { |
| 501 | Ok(CompareRunsOutcome::BaseRunNotFound) |
| 502 | } |
| 503 | Err(err) if err.contains_error_code("NOT_FOUND") => { |
| 504 | Ok(CompareRunsOutcome::ExecutorMismatch) |
| 505 | } |
| 506 | Err(err) => bail!("Failed to compare runs: {err:?}"), |
| 507 | } |
| 508 | } |
| 509 | |
| 510 | pub async fn fetch_local_run(&self, vars: FetchLocalRunVars) -> Result<FetchLocalRunResponse> { |
| 511 | let response = self |