From 6af37fbe538f8b06b3c0502716d7c706239c45f3 Mon Sep 17 00:00:00 2001 From: minottic Date: Tue, 9 Dec 2025 13:15:04 +0000 Subject: [PATCH 1/2] fix: exclude history if fields --- src/datasets/datasets.controller.ts | 5 +++++ test/jest-e2e-tests/datasetHistory.e2e-spec.ts | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/datasets/datasets.controller.ts b/src/datasets/datasets.controller.ts index 9cbc9a046..d54cad3a2 100644 --- a/src/datasets/datasets.controller.ts +++ b/src/datasets/datasets.controller.ts @@ -1289,6 +1289,11 @@ export class DatasetsController { }); if (dataset.length == 0) throw new ForbiddenException("Unauthorized access"); + if ( + Array.isArray(filterObj?.fields) && + !filterObj.fields.includes("history") + ) + return dataset[0]; return { ...dataset[0], history: await this.convertToObsoleteHistory(dataset[0].pid), diff --git a/test/jest-e2e-tests/datasetHistory.e2e-spec.ts b/test/jest-e2e-tests/datasetHistory.e2e-spec.ts index d9001415e..fb8ad2b04 100644 --- a/test/jest-e2e-tests/datasetHistory.e2e-spec.ts +++ b/test/jest-e2e-tests/datasetHistory.e2e-spec.ts @@ -127,4 +127,17 @@ describe("Test v3 history in datasetLifecycle", () => { expect(typeof lifecycle.previousValue._id).toBe("string"); }); }); + + it("Should check v3 built history by ID with field not including history", async () => { + const filter = { fields: ["datasetName"] }; + await request(app.getHttpServer()) + .get(`/api/v3/datasets/${encodeURIComponent(dsId)}`) + .query({ filter: JSON.stringify(filter) }) + .auth(token, { type: "bearer" }) + .expect(TestData.SuccessfulGetStatusCode) + .then((res) => { + expect(res.body.datasetName).toBeDefined(); + expect(res.body.history).toBeUndefined(); + }); + }); }); From 648a33df13afb367fdcb659a8e89ee4e5bed8f40 Mon Sep 17 00:00:00 2001 From: Omkar Zade Date: Tue, 9 Dec 2025 14:13:12 +0000 Subject: [PATCH 2/2] only include history if fields filter is falsy, to avoid recomputation --- src/datasets/datasets.controller.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/datasets/datasets.controller.ts b/src/datasets/datasets.controller.ts index d54cad3a2..82ed35abe 100644 --- a/src/datasets/datasets.controller.ts +++ b/src/datasets/datasets.controller.ts @@ -1289,15 +1289,13 @@ export class DatasetsController { }); if (dataset.length == 0) throw new ForbiddenException("Unauthorized access"); - if ( - Array.isArray(filterObj?.fields) && - !filterObj.fields.includes("history") - ) - return dataset[0]; - return { - ...dataset[0], - history: await this.convertToObsoleteHistory(dataset[0].pid), - }; + if (!filterObj.fields?.length) { + return { + ...dataset[0], + history: await this.convertToObsoleteHistory(dataset[0].pid), + }; + } + return dataset[0]; } // PATCH /datasets/:id