From 561f463598abc516c7975ab4da21ea3bbe806d9f Mon Sep 17 00:00:00 2001 From: Daniel Olojakpoke Date: Mon, 8 Nov 2021 10:23:38 +0100 Subject: [PATCH] fix: add offset to baseRepository getByFilter --- server/repositories/BaseRepository.js | 4 ++++ server/repositories/BaseRepository.spec.js | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/server/repositories/BaseRepository.js b/server/repositories/BaseRepository.js index da28c2c..5cb1c4a 100644 --- a/server/repositories/BaseRepository.js +++ b/server/repositories/BaseRepository.js @@ -26,6 +26,7 @@ class BaseRepository { * support: and / or * options: * limit: number + * offset: number */ async getByFilter(filter, options) { const whereBuilder = function (object, builder) { @@ -72,6 +73,9 @@ class BaseRepository { if (options && options.limit) { promise = promise.limit(options && options.limit); } + if (options && options.offset) { + promise = promise.offset(options && options.offset); + } const result = await promise; expect(result).a(expect.any(Array)); return result; diff --git a/server/repositories/BaseRepository.spec.js b/server/repositories/BaseRepository.spec.js index 8d202e7..ae8caf9 100644 --- a/server/repositories/BaseRepository.spec.js +++ b/server/repositories/BaseRepository.spec.js @@ -69,6 +69,25 @@ describe('BaseRepository', () => { expect(result[0]).property('id').eq(1); }); + it('getByFilter with offset', async () => { + tracker.uninstall(); + tracker.install(); + tracker.on('query', (query) => { + expect(query.sql).match(/select.*testTable.*offset.*/); + query.response([{ id: 1 }]); + }); + const result = await baseRepository.getByFilter( + { + name: 'testName', + }, + { + offset: 1, + }, + ); + expect(result).lengthOf(1); + expect(result[0]).property('id').eq(1); + }); + describe("'and' 'or' phrase", () => { it('{and: [{c:1}, {b:2}]}', async () => { tracker.uninstall();