-
Notifications
You must be signed in to change notification settings - Fork 154
/
Copy pathsafeParseMiddy.ts
34 lines (31 loc) · 944 Bytes
/
safeParseMiddy.ts
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
32
33
34
import { Logger } from '@aws-lambda-powertools/logger';
import { parser } from '@aws-lambda-powertools/parser/middleware';
import middy from '@middy/core';
import { z } from 'zod';
const logger = new Logger();
const orderSchema = z.object({
id: z.number().positive(),
description: z.string(),
items: z.array(
z.object({
id: z.number().positive(),
quantity: z.number(),
description: z.string(),
})
),
optionalField: z.string().optional(),
});
export const handler = middy()
.use(
parser({ schema: orderSchema, safeParse: true }) // (1)!
)
.handler(async (event): Promise<void> => {
if (event.success) {
for (const item of event.data.items) {
logger.info('Processing item', { item }); // (2)!
}
} else {
logger.error('Error parsing event', { event: event.error }); // (3)!
logger.error('Original event', { event: event.originalEvent }); // (4)!
}
});