Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 1x 1x 3x 3x 3x 3x 3x 3x 2x 2x 3x 2x 1x | import { APIGatewayEvent } from "aws-lambda";
import { produceMessage } from "libs/api/kafka";
import { baseUserRoleRequestSchema } from "shared-types/events/legacy-user";
import { z } from "zod";
import { nonAuthenticatedMiddy } from "../middleware";
export const updateUserRolesEventSchema = z
.object({
body: z.object({
updatedRoles: z.array(baseUserRoleRequestSchema),
}),
})
.passthrough();
export type UpdateUserRolesEvent = APIGatewayEvent & z.infer<typeof updateUserRolesEventSchema>;
export const handler = nonAuthenticatedMiddy({
opensearch: true,
kafka: true,
eventSchema: updateUserRolesEventSchema,
}).handler(async (event: UpdateUserRolesEvent) => {
const { updatedRoles } = event.body;
let hasError = false;
for (const updatedRole of updatedRoles) {
console.log("Producing message for:", updatedRole.email, updatedRole.role);
try {
await produceMessage(
process.env.topicName || "",
`${updatedRole.email}_${updatedRole.territory}_${updatedRole.role}`,
JSON.stringify({
email: updatedRole.email,
status: updatedRole.status,
territory: updatedRole.territory,
role: updatedRole.role,
doneByEmail: updatedRole.doneByEmail,
doneByName: updatedRole.doneByName,
date: Date.now(),
eventType: updatedRole.eventType,
}),
);
} catch (err) {
console.error(err);
hasError = true;
}
}
if (hasError) {
throw new Error("Error updating user roles");
}
return {
statusCode: 200,
body: { message: "Roles have been updated." },
};
});
|