42 lines
944 B
TypeScript
42 lines
944 B
TypeScript
import { requireAuth } from '~/server/utils/auth'
|
|
import { prisma } from '~/server/utils/prisma'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const user = requireAuth(event)
|
|
|
|
const userGroups = await prisma.groupMember.findMany({
|
|
where: { userId: user.id },
|
|
select: { groupId: true }
|
|
})
|
|
const groupIds = userGroups.map(m => m.groupId)
|
|
|
|
const canvasList = await prisma.canvas.findMany({
|
|
where: {
|
|
OR: [
|
|
{ ownerId: user.id },
|
|
{ isPublic: true },
|
|
{ groupId: { in: groupIds } }
|
|
]
|
|
},
|
|
select: {
|
|
id: true,
|
|
name: true,
|
|
ownerId: true,
|
|
groupId: true,
|
|
isPublic: true,
|
|
createdAt: true,
|
|
updatedAt: true,
|
|
nodes: true
|
|
},
|
|
orderBy: { updatedAt: 'desc' }
|
|
})
|
|
|
|
return {
|
|
canvases: canvasList.map(c => ({
|
|
...c,
|
|
nodeCount: Array.isArray(c.nodes) ? (c.nodes as any[]).length : 0,
|
|
nodes: undefined
|
|
}))
|
|
}
|
|
})
|