Browse Source

feat(admin): include per-user content counts in users list API

Made-with: Cursor
main
npmrun 7 hours ago
parent
commit
e989535640
  1. 13
      server/api/admin/users.get.ts

13
server/api/admin/users.get.ts

@ -1,6 +1,8 @@
import { dbGlobal } from "drizzle-pkg/lib/db"; import { dbGlobal } from "drizzle-pkg/lib/db";
import { users } from "drizzle-pkg/lib/schema/auth"; 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"; import { requireAdmin } from "#server/utils/admin-guard";
export default defineWrappedResponseHandler(async (event) => { export default defineWrappedResponseHandler(async (event) => {
@ -19,6 +21,15 @@ export default defineWrappedResponseHandler(async (event) => {
status: users.status, status: users.status,
publicSlug: users.publicSlug, publicSlug: users.publicSlug,
createdAt: users.createdAt, createdAt: users.createdAt,
postCount: sql<number>`(select count(*) from ${posts} where ${posts.userId} = ${users.id})`.mapWith(
Number,
),
timelineEventCount: sql<number>`(select count(*) from ${timelineEvents} where ${timelineEvents.userId} = ${users.id})`.mapWith(
Number,
),
rssFeedCount: sql<number>`(select count(*) from ${rssFeeds} where ${rssFeeds.userId} = ${users.id})`.mapWith(
Number,
),
}) })
.from(users) .from(users)
.orderBy(desc(users.id)) .orderBy(desc(users.id))

Loading…
Cancel
Save