diff --git a/lib/backend-api/src/query.rs b/lib/backend-api/src/query.rs index 99cf751cab0..af19fcaafee 100644 --- a/lib/backend-api/src/query.rs +++ b/lib/backend-api/src/query.rs @@ -275,17 +275,31 @@ pub async fn get_app_by_id( client: &WasmerClient, app_id: String, ) -> Result { - client + get_app_by_id_opt(client, app_id) + .await? + .context("app not found") +} + +/// Retrieve an app by its global id. +pub async fn get_app_by_id_opt( + client: &WasmerClient, + app_id: String, +) -> Result, anyhow::Error> { + let app_opt = client .run_graphql(types::GetDeployAppById::build( types::GetDeployAppByIdVars { app_id: app_id.into(), }, )) .await? - .app - .context("app not found")? - .into_deploy_app() - .context("app conversion failed") + .app; + + if let Some(app) = app_opt { + let app = app.into_deploy_app().context("app conversion failed")?; + Ok(Some(app)) + } else { + Ok(None) + } } /// Retrieve an app together with a specific version.