Model, schemas, API routes, activity log, and all server handlers updated. Old ecology/ and community-ecology routes removed, new board/ routes added. Tests updated and new board-suggestions tests written (10 cases).
70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
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',
|
|
})
|
|
}
|
|
})
|