refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (4)
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -3,18 +3,23 @@
|
||||
// `online` is the emulator's string flag "1" / "0" (see User model). Returns
|
||||
// { count: 0 } (never 500) on DB failure.
|
||||
|
||||
import { count, eq } from "drizzle-orm";
|
||||
import { apiJson } from "@/lib/api";
|
||||
import { cached } from "@/lib/cache";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { db, User } from "@/lib/db";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
export async function GET(_req: Request) {
|
||||
try {
|
||||
const count = await cached("online_count", 10_000, () =>
|
||||
prisma.user.count({ where: { online: "1" } }),
|
||||
);
|
||||
return apiJson({ count });
|
||||
const result = await cached("online_count", 10_000, async () => {
|
||||
const [row] = await db
|
||||
.select({ total: count() })
|
||||
.from(User)
|
||||
.where(eq(User.online, "1"));
|
||||
return row?.total ?? 0;
|
||||
});
|
||||
return apiJson({ count: result });
|
||||
} catch {
|
||||
return apiJson({ count: 0 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user