refactor(docker): sort container lists by name

- Add sorting to container retrieval methods in docker service
- Ensure consistent container list ordering across different container fetching functions
- Improve readability and predictability of container list results
This commit is contained in:
Mauricio Siu
2025-03-08 17:56:20 -06:00
parent c89f957133
commit 08d7c4e1c3

View File

@@ -136,24 +136,26 @@ export const getContainersByAppNameMatch = async (
result = stdout.trim().split("\n"); result = stdout.trim().split("\n");
} }
const containers = result.map((line) => { const containers = result
const parts = line.split(" | "); .map((line) => {
const containerId = parts[0] const parts = line.split(" | ");
? parts[0].replace("CONTAINER ID : ", "").trim() const containerId = parts[0]
: "No container id"; ? parts[0].replace("CONTAINER ID : ", "").trim()
const name = parts[1] : "No container id";
? parts[1].replace("Name: ", "").trim() const name = parts[1]
: "No container name"; ? parts[1].replace("Name: ", "").trim()
: "No container name";
const state = parts[2] const state = parts[2]
? parts[2].replace("State: ", "").trim() ? parts[2].replace("State: ", "").trim()
: "No state"; : "No state";
return { return {
containerId, containerId,
name, name,
state, state,
}; };
}); })
.sort((a, b) => a.name.localeCompare(b.name));
return containers || []; return containers || [];
} catch (_error) {} } catch (_error) {}
@@ -190,28 +192,30 @@ export const getStackContainersByAppName = async (
result = stdout.trim().split("\n"); result = stdout.trim().split("\n");
} }
const containers = result.map((line) => { const containers = result
const parts = line.split(" | "); .map((line) => {
const containerId = parts[0] const parts = line.split(" | ");
? parts[0].replace("CONTAINER ID : ", "").trim() const containerId = parts[0]
: "No container id"; ? parts[0].replace("CONTAINER ID : ", "").trim()
const name = parts[1] : "No container id";
? parts[1].replace("Name: ", "").trim() const name = parts[1]
: "No container name"; ? parts[1].replace("Name: ", "").trim()
: "No container name";
const state = parts[2] const state = parts[2]
? parts[2].replace("State: ", "").trim().toLowerCase() ? parts[2].replace("State: ", "").trim().toLowerCase()
: "No state"; : "No state";
const node = parts[3] const node = parts[3]
? parts[3].replace("Node: ", "").trim() ? parts[3].replace("Node: ", "").trim()
: "No specific node"; : "No specific node";
return { return {
containerId, containerId,
name, name,
state, state,
node, node,
}; };
}); })
.sort((a, b) => a.name.localeCompare(b.name));
return containers || []; return containers || [];
} catch (_error) {} } catch (_error) {}
@@ -249,29 +253,31 @@ export const getServiceContainersByAppName = async (
result = stdout.trim().split("\n"); result = stdout.trim().split("\n");
} }
const containers = result.map((line) => { const containers = result
const parts = line.split(" | "); .map((line) => {
const containerId = parts[0] const parts = line.split(" | ");
? parts[0].replace("CONTAINER ID : ", "").trim() const containerId = parts[0]
: "No container id"; ? parts[0].replace("CONTAINER ID : ", "").trim()
const name = parts[1] : "No container id";
? parts[1].replace("Name: ", "").trim() const name = parts[1]
: "No container name"; ? parts[1].replace("Name: ", "").trim()
: "No container name";
const state = parts[2] const state = parts[2]
? parts[2].replace("State: ", "").trim().toLowerCase() ? parts[2].replace("State: ", "").trim().toLowerCase()
: "No state"; : "No state";
const node = parts[3] const node = parts[3]
? parts[3].replace("Node: ", "").trim() ? parts[3].replace("Node: ", "").trim()
: "No specific node"; : "No specific node";
return { return {
containerId, containerId,
name, name,
state, state,
node, node,
}; };
}); })
.sort((a, b) => a.name.localeCompare(b.name));
return containers || []; return containers || [];
} catch (_error) {} } catch (_error) {}
@@ -306,23 +312,25 @@ export const getContainersByAppLabel = async (
const lines = stdout.trim().split("\n"); const lines = stdout.trim().split("\n");
const containers = lines.map((line) => { const containers = lines
const parts = line.split(" | "); .map((line) => {
const containerId = parts[0] const parts = line.split(" | ");
? parts[0].replace("CONTAINER ID : ", "").trim() const containerId = parts[0]
: "No container id"; ? parts[0].replace("CONTAINER ID : ", "").trim()
const name = parts[1] : "No container id";
? parts[1].replace("Name: ", "").trim() const name = parts[1]
: "No container name"; ? parts[1].replace("Name: ", "").trim()
const state = parts[2] : "No container name";
? parts[2].replace("State: ", "").trim() const state = parts[2]
: "No state"; ? parts[2].replace("State: ", "").trim()
return { : "No state";
containerId, return {
name, containerId,
state, name,
}; state,
}); };
})
.sort((a, b) => a.name.localeCompare(b.name));
return containers || []; return containers || [];
} catch (_error) {} } catch (_error) {}