Fix admin trade logs: wrong Prisma model and missing relations.

Load room_trade_log via SQL with user joins; status is always completed (no column in DB).

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-18 22:25:38 +02:00
1 parent afeabdad1b
commit 3dcd100c9f
2 files changed
+73 -24

No files matched your search

@@ -158,3 +158,74 @@ export async function loadCommandLogList({
return { rows, ...pagination };
}
export type TradeLogListRow = {
id: number;
userOneName: string;
userTwoName: string;
status: string;
timestamp: number;
};
export async function loadTradeLogList({
searchParams,
defaultPerPage = 50,
}: ListParamsInput) {
await requireLogsView();
const rawParams = await searchParams;
const { search, page, perPage } = parsePageParams(rawParams, defaultPerPage);
const offset = (page - 1) * perPage;
const like = `%${search}%`;
type RawRow = {
id: number;
timestamp: number;
userOneName: string | null;
userTwoName: string | null;
};
const [rawRows, countRows] = search
? await Promise.all([
prisma.$queryRaw<RawRow[]>`
SELECT t.id, t.timestamp,
u1.username AS userOneName, u2.username AS userTwoName
FROM room_trade_log t
LEFT JOIN users u1 ON u1.id = t.user_one_id
LEFT JOIN users u2 ON u2.id = t.user_two_id
WHERE u1.username LIKE ${like} OR u2.username LIKE ${like}
ORDER BY t.timestamp DESC
LIMIT ${perPage} OFFSET ${offset}`,
prisma.$queryRaw<{ count: bigint }[]>`
SELECT COUNT(*) AS count
FROM room_trade_log t
LEFT JOIN users u1 ON u1.id = t.user_one_id
LEFT JOIN users u2 ON u2.id = t.user_two_id
WHERE u1.username LIKE ${like} OR u2.username LIKE ${like}`,
])
: await Promise.all([
prisma.$queryRaw<RawRow[]>`
SELECT t.id, t.timestamp,
u1.username AS userOneName, u2.username AS userTwoName
FROM room_trade_log t
LEFT JOIN users u1 ON u1.id = t.user_one_id
LEFT JOIN users u2 ON u2.id = t.user_two_id
ORDER BY t.timestamp DESC
LIMIT ${perPage} OFFSET ${offset}`,
prisma.$queryRaw<{ count: bigint }[]>`
SELECT COUNT(*) AS count FROM room_trade_log`,
]);
const total = Number(countRows[0]?.count ?? 0);
const pagination = calcPagination(total, page, perPage);
const rows: TradeLogListRow[] = rawRows.map((row) => ({
id: row.id,
userOneName: row.userOneName ?? "-",
userTwoName: row.userTwoName ?? "-",
// room_trade_log only stores completed trades; no status column exists
status: "completed",
timestamp: row.timestamp,
}));
return { rows, ...pagination };
}