refactor(db): migrate app pages and APIs from Prisma facade to Drizzle (4)

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-08-01 14:15:36 +02:00
1 parent 580972c0a0
commit 9aa4f331bf
40 files changed
+1259 -927

No files matched your search

+15 -14
View File
@@ -1,9 +1,10 @@
import { asc, eq, gte } from "drizzle-orm";
import { notFound, redirect } from "next/navigation";
import { getTranslations } from "next-intl/server";
import { TicketQueueBanner } from "@/components/admin/ticket-queue-banner";
import { getMinStaffRank } from "@/lib/admin/min-staff-rank";
import { db, User, WebsiteTicket } from "@/lib/db";
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
import { prisma } from "@/lib/prisma";
import { AdminTicketDetail } from "./admin-ticket-detail";
export default async function AdminTicketDetailPage({
@@ -21,11 +22,11 @@ export default async function AdminTicketDetailPage({
const ticketId = Number(id);
if (Number.isNaN(ticketId)) notFound();
const ticket = await prisma.websiteTicket.findUnique({
where: { id: ticketId },
include: {
const ticket = await db.query.WebsiteTicket.findFirst({
where: eq(WebsiteTicket.id, ticketId),
with: {
creator: {
select: {
columns: {
id: true,
username: true,
look: true,
@@ -35,12 +36,12 @@ export default async function AdminTicketDetailPage({
accountCreated: true,
},
},
assignee: { select: { id: true, username: true } },
assignee: { columns: { id: true, username: true } },
messages: {
orderBy: { createdAt: "asc" },
include: {
orderBy: (m, { asc: a }) => [a(m.createdAt)],
with: {
user: {
select: { id: true, username: true, look: true, rank: true },
columns: { id: true, username: true, look: true, rank: true },
},
},
},
@@ -51,11 +52,11 @@ export default async function AdminTicketDetailPage({
// Staff assignees: min_staff_rank and above
const minStaffRank = await getMinStaffRank();
const staffMembers = await prisma.user.findMany({
where: { rank: { gte: minStaffRank } },
select: { id: true, username: true },
orderBy: { username: "asc" },
});
const staffMembers = await db
.select({ id: User.id, username: User.username })
.from(User)
.where(gte(User.rank, minStaffRank))
.orderBy(asc(User.username));
const canEdit = canAccess(permissions, PERMS.TICKETS_EDIT, session.user.rank);