@@ -274,6 +274,28 @@ export class ChangesService {
274274 queryCond . sequence = { $gt : Number ( changeFilter . since ) }
275275 delete queryCond . since
276276 }
277+
278+ if ( changeFilter . createdAfter ) {
279+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
280+ const createdAfterDate = new Date ( changeFilter . createdAfter )
281+ if ( Number . isNaN ( createdAfterDate . getTime ( ) ) ) {
282+ throw new UnprocessableEntityException (
283+ 'createdAfter must be a valid date string' ,
284+ )
285+ }
286+
287+ // Return only changes created on/after this date.
288+ queryCond . createdAt = {
289+ $gte : createdAfterDate ,
290+ }
291+ delete queryCond . createdAfter
292+ }
293+ delete queryCond . createdBefore
294+
295+ delete queryCond . limit
296+ delete queryCond . sort
297+ delete queryCond . offset
298+
277299 this . logger . debug ( `Search criteria: "${ JSON . stringify ( queryCond ) } "` )
278300
279301 let sortOrder : 1 | - 1 = - 1
@@ -289,6 +311,15 @@ export class ChangesService {
289311 if ( changeFilter . limit ) {
290312 changeCursor = changeCursor . limit ( Number ( changeFilter . limit ) )
291313 }
314+ if ( changeFilter . offset ) {
315+ const offset = Number ( changeFilter . offset )
316+ if ( ! Number . isInteger ( offset ) || offset < 0 ) {
317+ throw new UnprocessableEntityException (
318+ 'offset must be an integer greater than or equal to 0' ,
319+ )
320+ }
321+ changeCursor = changeCursor . skip ( offset )
322+ }
292323 const change = await changeCursor . exec ( )
293324
294325 if ( ! change ) {
0 commit comments