31 lines
847 B
TypeScript
31 lines
847 B
TypeScript
import { requireAuth } from '~/server/utils/auth'
|
|
import { prisma } from '~/server/utils/prisma'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const user = requireAuth(event)
|
|
|
|
const allGroups = await prisma.group.findMany({
|
|
where: { isPublic: true },
|
|
include: {
|
|
members: { include: { user: { select: { id: true, username: true } } } },
|
|
_count: { select: { members: true, canvases: true } }
|
|
},
|
|
orderBy: { createdAt: 'desc' }
|
|
})
|
|
|
|
return {
|
|
groups: allGroups.map(g => ({
|
|
id: g.id,
|
|
name: g.name,
|
|
description: g.description,
|
|
isPublic: g.isPublic,
|
|
ownerId: g.ownerId,
|
|
createdAt: g.createdAt,
|
|
updatedAt: g.updatedAt,
|
|
memberCount: g._count.members,
|
|
canvasCount: g._count.canvases,
|
|
isMember: g.members.some(m => m.userId === user.id)
|
|
}))
|
|
}
|
|
})
|