refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (4)
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
1 parent
580972c0a0
commit
9aa4f331bf
40 files changed
+1259
-927
No files matched your search
@@ -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 });
|
||||
}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
// Public REST API — list of currently-online users (username + look only).
|
||||
//
|
||||
// `online` is stored by the emulator as the string "1" / "0" (see User model in
|
||||
// prisma/schema.prisma). Capped at 100 rows. Returns empty data (never 500) on
|
||||
// DB failure.
|
||||
// `online` is stored by the emulator as the string "1" / "0" (see User model).
|
||||
// Capped at 100 rows. Returns empty data (never 500) on DB failure.
|
||||
|
||||
import { 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 users = await cached("online_users", 10_000, async () =>
|
||||
prisma.user.findMany({
|
||||
where: { online: "1" },
|
||||
select: { username: true, look: true },
|
||||
take: 100,
|
||||
}),
|
||||
db
|
||||
.select({ username: User.username, look: User.look })
|
||||
.from(User)
|
||||
.where(eq(User.online, "1"))
|
||||
.limit(100),
|
||||
);
|
||||
|
||||
return apiJson({ users });
|
||||
|
||||
Reference in new issue
Block a user