From 2a00a01a04388adfafd8537c64e04d2c311cc946 Mon Sep 17 00:00:00 2001 From: Dominique Pfister Date: Tue, 7 Jan 2025 10:31:02 +0100 Subject: [PATCH] fix: return columns as well (#785) --- src/utils/json-filter.js | 6 +++++- test/json-pipe.test.js | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/utils/json-filter.js b/src/utils/json-filter.js index f07ceb48..c43504c9 100644 --- a/src/utils/json-filter.js +++ b/src/utils/json-filter.js @@ -36,12 +36,16 @@ export default function jsonFilter(state, res, query) { function filter(dataStruct) { const len = Math.min(limit, dataStruct.data.length - offset); const filtered = dataStruct.data.slice(offset, offset + len); - return { + const ret = { total: dataStruct.total, offset, limit: filtered.length, data: filtered, }; + if (dataStruct.columns) { + ret.columns = dataStruct.columns; + } + return ret; } const { data } = state.content; diff --git a/test/json-pipe.test.js b/test/json-pipe.test.js index 1aee8a8c..b3560ba2 100644 --- a/test/json-pipe.test.js +++ b/test/json-pipe.test.js @@ -67,6 +67,7 @@ describe('JSON Pipe Test', () => { let TEST_DATA; let TEST_SINGLE_SHEET; let TEST_MULTI_SHEET; + const TEST_COLUMNS = ['col0', 'col1', 'col2', 'col3']; before(async () => { TEST_DATA = JSON.parse(await readFile(resolve(__testdir, 'fixtures', 'json', 'test-data.json'), 'utf-8')); @@ -75,6 +76,7 @@ describe('JSON Pipe Test', () => { limit: TEST_DATA.length, total: TEST_DATA.length, data: TEST_DATA, + columns: TEST_COLUMNS, }); TEST_MULTI_SHEET = (names = ['foo', 'bar']) => JSON.stringify( { @@ -84,6 +86,7 @@ describe('JSON Pipe Test', () => { limit: TEST_DATA.length, total: TEST_DATA.length, data: TEST_DATA, + columns: TEST_COLUMNS, }])), ), ':names': names, @@ -139,6 +142,7 @@ describe('JSON Pipe Test', () => { offset: 5, limit: 10, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA.slice(5, 15), }); assert.deepStrictEqual(Object.fromEntries(resp.headers.entries()), { @@ -163,6 +167,7 @@ describe('JSON Pipe Test', () => { offset: 5, limit: 10, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA.slice(5, 15), }); assert.deepStrictEqual(Object.fromEntries(resp.headers.entries()), { @@ -200,6 +205,7 @@ describe('JSON Pipe Test', () => { offset: 5, limit: 10, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA.slice(5, 15), }); const headers = Object.fromEntries(resp.headers.entries()); @@ -307,6 +313,7 @@ describe('JSON Pipe Test', () => { offset: 5, limit: 10, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA.slice(5, 15), }); const headers = Object.fromEntries(resp.headers.entries()); @@ -339,6 +346,7 @@ describe('JSON Pipe Test', () => { offset: 5, limit: 10, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA.slice(5, 15), }); const headers = Object.fromEntries(resp.headers.entries()); @@ -381,6 +389,7 @@ describe('JSON Pipe Test', () => { offset: 5, limit: 10, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA.slice(5, 15), }); assert.deepStrictEqual(Object.fromEntries(resp.headers.entries()), { @@ -663,12 +672,14 @@ describe('JSON Pipe Test', () => { offset: 0, limit: TEST_DATA.length, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA, }, bar: { offset: 0, limit: TEST_DATA.length, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA, }, }); @@ -698,6 +709,7 @@ describe('JSON Pipe Test', () => { offset: 0, limit: TEST_DATA.length, total: TEST_DATA.length, + columns: TEST_COLUMNS, data: TEST_DATA, }, });