1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32import { db, event, isStaging } from '#src/utils';
import { LambdaClient, InvokeCommand } from '@aws-sdk/client-lambda';
const lambda = new LambdaClient();
export const rescanAudit = async () => {
const { id: audit_id } = event.body;
await db.connect();
const urls = (await db.query({
text: `SELECT * FROM "urls" WHERE "audit_id"=$1`,
values: [audit_id],
})).rows;
console.log('Found URLs for audit:', { auditId: audit_id, count: urls?.length, urls });
const scanId = (await db.query({
text: `INSERT INTO "scans" ("audit_id", "status", "pages") VALUES ($1, $2, $3) RETURNING "id"`,
values: [audit_id, 'processing', JSON.stringify(urls.map(obj => ({ url: obj.url, type: obj.type })))],
})).rows[0].id;
await lambda.send(new InvokeCommand({
FunctionName: "aws-lambda-scan-sqs-router",
InvocationType: "Event",
Payload: JSON.stringify({
urls: urls?.map(url => ({ auditId: audit_id, scanId: scanId, urlId: url.id, url: url.url, type: url.type, isStaging }))
})
}));
await db.clean();
return {
status: 'success',
message: 'Scan successfully queued',
};
}