fix(worker): throw on invalid approvedAt in index processor
This commit is contained in:
@@ -56,4 +56,11 @@ describe('processIndexJob', () => {
|
|||||||
expect.objectContaining({ approvedAt: new Date('2026-01-01T00:00:00.000Z').getTime() }),
|
expect.objectContaining({ approvedAt: new Date('2026-01-01T00:00:00.000Z').getTime() }),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('throws for invalid approvedAt string', async () => {
|
||||||
|
const mockClient = {} as any;
|
||||||
|
await expect(processIndexJob(makeJob({ approvedAt: 'not-a-date' }), mockClient)).rejects.toThrow(
|
||||||
|
'Invalid approvedAt timestamp: "not-a-date"',
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import { MeiliSearch, MeiliDocument, indexMessage } from '@tower/search';
|
|||||||
import { parseRedisUrl } from './redis-connection';
|
import { parseRedisUrl } from './redis-connection';
|
||||||
|
|
||||||
export async function processIndexJob(job: IndexJobData, meiliClient: MeiliSearch): Promise<void> {
|
export async function processIndexJob(job: IndexJobData, meiliClient: MeiliSearch): Promise<void> {
|
||||||
|
const approvedAt = new Date(job.approvedAt).getTime();
|
||||||
|
if (Number.isNaN(approvedAt)) {
|
||||||
|
throw new Error(`Invalid approvedAt timestamp: "${job.approvedAt}"`);
|
||||||
|
}
|
||||||
const doc: MeiliDocument = {
|
const doc: MeiliDocument = {
|
||||||
id: job.messageId,
|
id: job.messageId,
|
||||||
content: job.content,
|
content: job.content,
|
||||||
@@ -12,7 +16,7 @@ export async function processIndexJob(job: IndexJobData, meiliClient: MeiliSearc
|
|||||||
sourceGroupName: job.sourceGroupName,
|
sourceGroupName: job.sourceGroupName,
|
||||||
tags: job.tags,
|
tags: job.tags,
|
||||||
platform: job.platform,
|
platform: job.platform,
|
||||||
approvedAt: new Date(job.approvedAt).getTime(),
|
approvedAt,
|
||||||
};
|
};
|
||||||
await indexMessage(meiliClient, doc);
|
await indexMessage(meiliClient, doc);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user