31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
// routes/notifications.routes.ts
|
|
import { FastifyInstance } from 'fastify';
|
|
import { NotificationService, UserDirectory } from '../modules/notification.service';
|
|
|
|
// Beispiel: E-Mail aus eigener User-Tabelle laden
|
|
const getUserDirectory: UserDirectory = async (server:FastifyInstance, userId, tenantId) => {
|
|
const { data, error } = await server.supabase
|
|
.from('auth_users')
|
|
.select('email')
|
|
.eq('id', userId)
|
|
.maybeSingle();
|
|
if (error || !data) return null;
|
|
return { email: data.email };
|
|
};
|
|
|
|
export default async function notificationsRoutes(server: FastifyInstance) {
|
|
// wichtig: server.supabase ist über app verfügbar
|
|
|
|
const svc = new NotificationService(server, getUserDirectory);
|
|
|
|
server.post('/notifications/trigger', async (req, reply) => {
|
|
try {
|
|
const res = await svc.trigger(req.body as any);
|
|
reply.send(res);
|
|
} catch (err: any) {
|
|
server.log.error(err);
|
|
reply.code(500).send({ error: err.message });
|
|
}
|
|
});
|
|
}
|