From 34a642f33b25da4d495a4f5fb23ceab0f5671508 Mon Sep 17 00:00:00 2001 From: Derock Date: Mon, 4 Mar 2024 12:51:59 -0500 Subject: [PATCH] fix: dont error on undeployed --- .../routers/projects/service/containers.ts | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/server/api/routers/projects/service/containers.ts b/src/server/api/routers/projects/service/containers.ts index 106d2c2..ee93da7 100644 --- a/src/server/api/routers/projects/service/containers.ts +++ b/src/server/api/routers/projects/service/containers.ts @@ -92,7 +92,30 @@ export const getServiceContainers = authenticatedProcedure // get docker service stats const service = (await ctx.docker .getService(`${ctx.project.internalName}_${ctx.service.name}`) - .inspect()) as DockerAPITypes["/services/{id}"]["get"]["responses"]["200"]["schema"]; + .inspect() + .catch((err: unknown) => { + if ( + typeof err === "object" && + err && + "statusCode" in err && + err.statusCode === 404 + ) + return null; + + throw err; + })) as + | DockerAPITypes["/services/{id}"]["get"]["responses"]["200"]["schema"] + | null; + + if (!service) + return { + replication: { + running: 0, + desired: 0, + }, + + latest: [], + }; assert(service.ID, "Unable to retrieve service ID."); @@ -156,11 +179,11 @@ export const getServiceContainers = authenticatedProcedure : await ctx.docker .getContainer(task.Status.ContainerStatus.ContainerID) .stats({ "one-shot": true, stream: false }) - .catch((err) => { + .catch((err: unknown) => { if ( typeof err === "object" && + err && "statusCode" in err && - // TODO: figure out why TS isn't happy err.statusCode === 404 ) return null;