-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathlambda-rmu-handler.ts
More file actions
29 lines (26 loc) · 849 Bytes
/
lambda-rmu-handler.ts
File metadata and controls
29 lines (26 loc) · 849 Bytes
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
import { PrismaClient } from "@prisma/client";
import type { DynamoDBStreamEvent, Handler } from "aws-lambda";
import { GroupChatDao, ReadModelUpdater } from "cqrs-es-example-js-rmu";
let prisma: PrismaClient | undefined;
let readModelUpdater: ReadModelUpdater | undefined;
function getReadModelUpdater(): ReadModelUpdater {
if (readModelUpdater) {
return readModelUpdater;
}
const databaseUrl = process.env.DATABASE_URL;
if (!databaseUrl) {
throw new Error("DATABASE_URL is not set");
}
prisma = new PrismaClient({
datasources: {
db: {
url: databaseUrl,
},
},
});
readModelUpdater = ReadModelUpdater.of(GroupChatDao.of(prisma));
return readModelUpdater;
}
export const handler: Handler<DynamoDBStreamEvent, void> = async (event) => {
await getReadModelUpdater().updateReadModel(event);
};