import jwt from "jsonwebtoken"; import Member from "../models/member.js"; import { connectDB } from "../utils/mongoose.js"; export default defineEventHandler(async (event) => { await connectDB(); // Check if user is authenticated (optional for this endpoint) const token = getCookie(event, "auth-token"); let isAuthenticated = false; if (token) { try { jwt.verify(token, process.env.JWT_SECRET); isAuthenticated = true; } catch (err) { isAuthenticated = false; } } const query = getQuery(event); const topic = query.topic; // Build query for peer supporters const dbQuery = { "peerSupport.enabled": true, status: "active", }; // Filter by topic if specified if (topic) { dbQuery["peerSupport.topics"] = topic; } try { const supporters = await Member.find(dbQuery) .select( "name avatar circle peerSupport slackUserId createdAt" ) .sort({ createdAt: -1 }) .lean(); // Get unique topics for filter options const allTopics = supporters .flatMap((supporter) => supporter.peerSupport?.topics || []) .filter((topic, index, self) => self.indexOf(topic) === index) .sort(); return { supporters, totalCount: supporters.length, filters: { availableTopics: allTopics, }, }; } catch (error) { console.error("Peer support fetch error:", error); throw createError({ statusCode: 500, statusMessage: "Failed to fetch peer supporters", }); } });