-
Notifications
You must be signed in to change notification settings - Fork 146
/
Copy pathinngest.config.ts
63 lines (57 loc) · 1.59 KB
/
inngest.config.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
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
61
62
63
import { Inngest } from "inngest";
import { serve } from "inngest/next";
// Define event types for better type safety
export type AppEvents = {
"user/registered": {
data: {
userId: string;
email: string;
name?: string;
timestamp: string;
};
};
"inngest/send": {
data: {
message: string;
metadata?: Record<string, any>;
};
};
};
// Initialize Inngest with typed events
export const inngest = new Inngest({
id: "newco",
eventKey: "events",
validateEvents: process.env.NODE_ENV === "development",
});
// Define event handlers
export const userRegisteredFn = inngest.createFunction(
{ id: "user-registered-handler" },
{ event: "user/registered" },
async ({ event, step }) => {
await step.run("Log registration", async () => {
console.log(`New user registered: ${event.data.email}`);
});
// Example: Send welcome email
await step.run("Send welcome email", async () => {
// Add your email sending logic here
console.log(`Sending welcome email to ${event.data.email}`);
});
},
);
export const messageHandlerFn = inngest.createFunction(
{ id: "message-handler" },
{ event: "inngest/send" },
async ({ event, step }) => {
await step.run("Process message", async () => {
console.log(`Processing message: ${event.data.message}`);
if (event.data.metadata) {
console.log("Metadata:", event.data.metadata);
}
});
},
);
// Export the serve function for use in API routes
export const serveInngest = serve({
client: inngest,
functions: [userRegisteredFn, messageHandlerFn],
});