forked from BRETT/BRETT
Initial Commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
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,
|
||||
},
|
||||
}))
|
||||
})
|
||||
Reference in New Issue
Block a user