ghostguild-org/server/api/events/recommended.get.js

34 lines
988 B
JavaScript

import Event from '../../models/event.js'
import { connectDB } from '../../utils/mongoose.js'
import { requireAuth } from '../../utils/auth.js'
export default defineEventHandler(async (event) => {
const member = await requireAuth(event)
// Combine craft tags and cooperative ecology tags
const craftTags = member.craftTags || []
const ecologyTags = (member.communityEcology?.topics || []).map(t => t.tagSlug)
const memberTags = [...new Set([...craftTags, ...ecologyTags].filter(Boolean))]
if (!memberTags.length) {
return []
}
await connectDB()
const query = getQuery(event)
const limit = Math.min(Math.max(parseInt(query.limit) || 10, 1), 25)
const events = await Event.find({
tags: { $in: memberTags },
startDate: { $gt: new Date() },
isCancelled: { $ne: true },
isVisible: true
})
.sort({ startDate: 1 })
.limit(limit)
.select('title slug startDate endDate tagline tags eventType isOnline')
.lean()
return events
})