Skip to content

Commit ae0ae6e

Browse files
authored
Merge pull request #4407 from GordonSmith/GH-4392-SF_LF_COUNT
feat: Add recursiveFetchLogicalFiles
2 parents 379961d + 9ade578 commit ae0ae6e

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

packages/comms/src/ecl/logicalFile.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ export class LogicalFile extends StateObject<FileDetailEx, FileDetailEx> impleme
176176
return this.connection.DFUFile({ Name: this.Name, Format: format });
177177
}
178178

179+
fetchAllLogicalFiles(): Promise<string[]> {
180+
return this.connection.recursiveFetchLogicalFiles([this]);
181+
}
182+
179183
fetchListHistory(): Promise<WsDfu.Origin[]> {
180184
return this.connection.ListHistory({ Name: this.Name }).then(response => {
181185
return response?.History?.Origin || [];

packages/comms/src/services/wsDFU.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,20 @@ export class DFUService extends DfuServiceBase {
1515
return this._connection.send("DFUDefFile", request, "text");
1616
}
1717

18+
async recursiveFetchLogicalFiles(superFiles: { NodeGroup: string, Name: string }[]): Promise<string[]> {
19+
const childSuperFiles: WsDfu.DFULogicalFile[] = [];
20+
const logicalFiles: string[] = [];
21+
await Promise.all(superFiles.map(superFile => {
22+
return this.DFUInfo({ Cluster: superFile.NodeGroup, Name: superFile.Name, IncludeJsonTypeInfo: false, IncludeBinTypeInfo: false, ForceIndexInfo: false })
23+
.then(response => {
24+
for (const child of response?.FileDetail?.Superfiles?.DFULogicalFile ?? []) {
25+
childSuperFiles.push(child);
26+
}
27+
for (const child of response?.FileDetail?.subfiles?.Item ?? []) {
28+
logicalFiles.push(child);
29+
}
30+
});
31+
}));
32+
return logicalFiles.concat(childSuperFiles.length ? await this.recursiveFetchLogicalFiles(childSuperFiles) : []);
33+
}
1834
}

packages/comms/tests/wsDFU.spec.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, it, expect } from "vitest";
22

3-
import { DFUService, Workunit } from "@hpcc-js/comms";
3+
import { DFUService, LogicalFile, Workunit } from "../src/index.common.ts";
44
import { ESP_URL } from "./testLib.ts";
55

66
describe("WsDFU", function () {
@@ -20,4 +20,13 @@ describe("WsDFU", function () {
2020
return wu.delete();
2121
});
2222
});
23+
24+
it.skip("recursiveFetch", async function () {
25+
const lf = LogicalFile.attach({ baseUrl: ESP_URL }, "hthor__myeclagent", "regress::single::hthor::w20250409-083457::t6_superfile");
26+
expect(lf).to.exist;
27+
28+
const logicalFiles = await lf.fetchAllLogicalFiles();
29+
expect(logicalFiles).to.exist;
30+
expect(logicalFiles.length).to.be.greaterThan(0);
31+
});
2332
});

0 commit comments

Comments
 (0)