From e9895356409134952ccbd9308f498c9c758fcd0a Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Sat, 18 Apr 2026 14:51:50 +0800 Subject: [PATCH] feat(admin): include per-user content counts in users list API Made-with: Cursor --- server/api/admin/users.get.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/api/admin/users.get.ts b/server/api/admin/users.get.ts index dcca9d6..4625c5e 100644 --- a/server/api/admin/users.get.ts +++ b/server/api/admin/users.get.ts @@ -1,6 +1,8 @@ import { dbGlobal } from "drizzle-pkg/lib/db"; import { users } from "drizzle-pkg/lib/schema/auth"; -import { desc } from "drizzle-orm"; +import { posts, timelineEvents } from "drizzle-pkg/lib/schema/content"; +import { rssFeeds } from "drizzle-pkg/lib/schema/rss"; +import { desc, sql } from "drizzle-orm"; import { requireAdmin } from "#server/utils/admin-guard"; export default defineWrappedResponseHandler(async (event) => { @@ -19,6 +21,15 @@ export default defineWrappedResponseHandler(async (event) => { status: users.status, publicSlug: users.publicSlug, createdAt: users.createdAt, + postCount: sql`(select count(*) from ${posts} where ${posts.userId} = ${users.id})`.mapWith( + Number, + ), + timelineEventCount: sql`(select count(*) from ${timelineEvents} where ${timelineEvents.userId} = ${users.id})`.mapWith( + Number, + ), + rssFeedCount: sql`(select count(*) from ${rssFeeds} where ${rssFeeds.userId} = ${users.id})`.mapWith( + Number, + ), }) .from(users) .orderBy(desc(users.id))