Skip to content

Commit 440d6b4

Browse files
feat: make to date inclusive (#7775)
Changes the handling of the `to` query parameter in the API to be inclusive.
1 parent 2556bd0 commit 440d6b4

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/lib/features/events/event-service.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { ApiTokenType } from '../../types/models/api-token';
1313
import { EVENTS_CREATED_BY_PROCESSED } from '../../metric-events';
1414
import type { IQueryParam } from '../feature-toggle/types/feature-toggle-strategies-store-type';
1515
import { parseSearchOperatorValue } from '../feature-search/search-utils';
16+
import { endOfDay, formatISO } from 'date-fns';
1617

1718
export default class EventService {
1819
private logger: Logger;
@@ -158,7 +159,13 @@ export default class EventService {
158159
}
159160

160161
if (params.to) {
161-
const parsed = parseSearchOperatorValue('created_at', params.to);
162+
const parsed = parseSearchOperatorValue(
163+
'created_at',
164+
formatISO(endOfDay(new Date(params.to)), {
165+
representation: 'date',
166+
}),
167+
);
168+
162169
if (parsed) {
163170
queryParams.push({
164171
field: parsed.field,

src/test/e2e/api/admin/event-search.e2e.test.ts

+27
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,33 @@ test('should filter events by created date range', async () => {
246246
});
247247
});
248248

249+
test('should include dates created on the `to` date', async () => {
250+
await eventService.storeEvent({
251+
type: FEATURE_CREATED,
252+
project: 'default',
253+
data: { featureName: 'my_feature_b' },
254+
createdBy: 'test-user',
255+
createdByUserId: TEST_USER_ID,
256+
ip: '127.0.0.1',
257+
});
258+
259+
const today = new Date();
260+
261+
const { body } = await searchEvents({
262+
to: `IS:${today.toISOString().split('T')[0]}`,
263+
});
264+
265+
expect(body).toMatchObject({
266+
events: [
267+
{
268+
type: FEATURE_CREATED,
269+
data: { featureName: 'my_feature_b' },
270+
},
271+
],
272+
total: 1,
273+
});
274+
});
275+
249276
test('should paginate with offset and limit', async () => {
250277
for (let i = 0; i < 5; i++) {
251278
await eventService.storeEvent({

0 commit comments

Comments
 (0)