-
Notifications
You must be signed in to change notification settings - Fork 14
/
methods.ts
25 lines (21 loc) · 749 Bytes
/
methods.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
import { events, Events } from '~/lib/events';
import { t } from './init';
import { isAuthenticated } from './middleware/isAuthenticated';
export const router = t.router;
export const middleware = t.middleware;
export const publicProcedure = t.procedure;
export const authenticatedProcedure = t.procedure.use(isAuthenticated);
type EventOptions<T> = {
procedure: typeof t.procedure;
channel: string;
event: T;
};
export const triggerEvent = <T extends keyof Events>(
eventOptions: EventOptions<T>
) => {
const { procedure, channel, event } = eventOptions;
const eventSchema = events[event];
return procedure.input(eventSchema).mutation(async ({ input, ctx }) => {
await ctx.eventServer.trigger(channel, event, input);
});
};