import { asc, count } from 'drizzle-orm' import { comments, uploads, users } from '../../db/schema' export default defineEventHandler(async () => { const db = useDb() const rows = await db .select({ id: users.id, name: users.name, color: users.color, avatar: users.avatar, cardEffect: users.cardEffect, cardEffectColor: users.cardEffectColor, cardVignette: users.cardVignette, cardBorderEffect: users.cardBorderEffect, cardBorderEffectColor: users.cardBorderEffectColor, createdAt: users.createdAt, }) .from(users) .orderBy(asc(users.id)) const [uploadStats, commentStats] = await Promise.all([ db.select({ userId: uploads.userId, count: count() }).from(uploads).groupBy(uploads.userId), db.select({ userId: comments.userId, count: count() }).from(comments).groupBy(comments.userId), ]) const uploadCount = new Map(uploadStats.map(s => [s.userId, s.count])) const commentCount = new Map(commentStats.map(s => [s.userId, s.count])) return rows.map(u => ({ id: u.id, name: u.name, color: u.color, avatarUrl: avatarUrl(u.avatar), cardEffect: u.cardEffect, cardEffectColor: u.cardEffectColor, cardVignette: u.cardVignette, cardBorderEffect: u.cardBorderEffect, cardBorderEffectColor: u.cardBorderEffectColor, createdAt: u.createdAt, stats: { uploads: uploadCount.get(u.id) ?? 0, comments: commentCount.get(u.id) ?? 0, }, })) })