feat: --project scopes get servers/instances #27

Merged
michal merged 1 commits from feat/project-scoped-get into main 2026-02-23 19:03:24 +00:00
Showing only changes of commit 767725023e - Show all commits

View File

@@ -54,6 +54,21 @@ export function createProgram(): Command {
})); }));
const fetchResource = async (resource: string, nameOrId?: string): Promise<unknown[]> => { const fetchResource = async (resource: string, nameOrId?: string): Promise<unknown[]> => {
const projectName = program.opts().project as string | undefined;
// --project scoping for servers and instances
if (projectName && !nameOrId && (resource === 'servers' || resource === 'instances')) {
const projectId = await resolveNameOrId(client, 'projects', projectName);
if (resource === 'servers') {
return client.get<unknown[]>(`/api/v1/projects/${projectId}/servers`);
}
// instances: fetch project servers, then filter instances by serverId
const projectServers = await client.get<Array<{ id: string }>>(`/api/v1/projects/${projectId}/servers`);
const serverIds = new Set(projectServers.map((s) => s.id));
const allInstances = await client.get<Array<{ serverId: string }>>(`/api/v1/instances`);
return allInstances.filter((inst) => serverIds.has(inst.serverId));
}
if (nameOrId) { if (nameOrId) {
// Glob pattern — use query param filtering // Glob pattern — use query param filtering
if (nameOrId.includes('*')) { if (nameOrId.includes('*')) {