37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { canvases, userGroups } from '~/server/utils/db'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const userId = getRouterParam(event, 'id')
|
|
|
|
if (!userId) {
|
|
throw createError({ statusCode: 400, message: 'User ID is required' })
|
|
}
|
|
|
|
// Get user's group memberships
|
|
const userGroupIds = Array.from(userGroups.values())
|
|
.filter(membership => membership.userId === userId)
|
|
.map(membership => membership.groupId)
|
|
|
|
// Get canvases owned by user or shared with user's groups
|
|
const userCanvases = Array.from(canvases.values()).filter(canvas => {
|
|
// User's own canvases
|
|
if (canvas.ownerId === userId) return true
|
|
// Group canvases
|
|
if (canvas.groupId && userGroupIds.includes(canvas.groupId)) return true
|
|
return false
|
|
})
|
|
|
|
const canvasList = userCanvases.map(canvas => ({
|
|
id: canvas.id,
|
|
name: canvas.name,
|
|
ownerId: canvas.ownerId,
|
|
createdAt: canvas.createdAt,
|
|
updatedAt: canvas.updatedAt,
|
|
isPublic: canvas.isPublic,
|
|
groupId: canvas.groupId,
|
|
nodeCount: canvas.nodes.length
|
|
}))
|
|
|
|
return { canvases: canvasList }
|
|
})
|