import { db } from "@/db/client"; import { users, watchingNowItems, watchlistItems } from "@/db/schema"; import { count, desc, isNull } from "drizzle-orm"; export const dynamic = "force-dynamic"; function formatDate(value: Date) { return value.toISOString().slice(0, 10); } export default async function AdminUsersPage() { const [userRows, watchingCounts, watchlistCounts] = await Promise.all([ db.select().from(users).orderBy(desc(users.createdAt)), db .select({ userId: watchingNowItems.userId, activeCount: count() }) .from(watchingNowItems) .where(isNull(watchingNowItems.removedAt)) .groupBy(watchingNowItems.userId), db .select({ userId: watchlistItems.userId, activeCount: count() }) .from(watchlistItems) .where(isNull(watchlistItems.removedAt)) .groupBy(watchlistItems.userId), ]); const watchingByUser = new Map(watchingCounts.map((row) => [row.userId, row.activeCount])); const watchlistByUser = new Map(watchlistCounts.map((row) => [row.userId, row.activeCount])); return (
People
{user.displayName}
{user.isAdmin ? "Admin" : "User"}
{user.email}
{watchingByUser.get(user.id) ?? 0}/{user.watchingNowTvSlots + user.watchingNowMovieSlots}
{watchlistByUser.get(user.id) ?? 0}
{formatDate(user.createdAt)}
No users found.
}