Tests, UX improvements.
This commit is contained in:
parent
4e6f5d36b8
commit
0ae18f495e
63 changed files with 1384 additions and 2330 deletions
43
server/api/members/[id]/activity.get.js
Normal file
43
server/api/members/[id]/activity.get.js
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
import Member from '../../../models/member.js'
|
||||
import ActivityLog from '../../../models/activityLog.js'
|
||||
import { connectDB } from '../../../utils/mongoose.js'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
await connectDB()
|
||||
|
||||
const id = getRouterParam(event, 'id')
|
||||
|
||||
const member = await Member.findOne({
|
||||
_id: id,
|
||||
showInDirectory: true,
|
||||
status: 'active'
|
||||
}).lean()
|
||||
|
||||
if (!member) {
|
||||
throw createError({ statusCode: 404, statusMessage: 'Member not found' })
|
||||
}
|
||||
|
||||
const query = getQuery(event)
|
||||
const limit = Math.min(parseInt(query.limit) || 5, 20)
|
||||
const before = query.before ? new Date(query.before) : null
|
||||
|
||||
const filter = {
|
||||
member: member._id,
|
||||
visibility: 'public'
|
||||
}
|
||||
if (before) filter.timestamp = { $lt: before }
|
||||
|
||||
const entries = await ActivityLog.find(filter)
|
||||
.sort({ timestamp: -1 })
|
||||
.limit(limit + 1)
|
||||
.lean()
|
||||
|
||||
const hasMore = entries.length > limit
|
||||
if (hasMore) entries.pop()
|
||||
|
||||
const nextCursor = hasMore && entries.length
|
||||
? entries[entries.length - 1].timestamp.toISOString()
|
||||
: null
|
||||
|
||||
return { entries, hasMore, nextCursor }
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue