import Member from '../../../models/member.js' import { connectDB } from '../../../utils/mongoose.js' export default defineEventHandler(async (event) => { await connectDB() const member = await requireAuth(event) const body = await validateBody(event, boardUpdateSchema) const updateData = { 'board.topics': body.topics || [], 'board.offerPeerSupport': body.offerPeerSupport || false, 'board.availability': body.availability || '', 'board.slackHandle': body.slackHandle || '', 'board.personalMessage': body.personalMessage || '', 'board.details': body.details || '', } if (body.offerPeerSupport && body.slackHandle) { try { const { getSlackService } = await import('../../../utils/slack.ts') const slackService = getSlackService() if (slackService) { const slackUserId = await slackService.findUserIdByUsername(body.slackHandle) if (slackUserId) { updateData.slackUserId = slackUserId } else { console.warn( `[Board] Could not find Slack user ID for handle: ${body.slackHandle}`, ) } } } catch (error) { console.error('[Board] Error fetching Slack user ID:', error.message) } } try { const updated = await Member.findByIdAndUpdate( member._id, { $set: updateData }, { new: true, runValidators: true }, ) if (!updated) { throw createError({ statusCode: 404, statusMessage: 'Member not found', }) } logActivity(member._id, 'board_updated', { topicCount: (body.topics || []).length, offerPeerSupport: body.offerPeerSupport || false, }) return { success: true, board: updated.board, } } catch (error) { if (error.statusCode) throw error console.error('Board update error:', error) throw createError({ statusCode: 500, statusMessage: 'Failed to update board settings', }) } })