From 6bbaf9f904d111ca5c47207281ab465e632a0456 Mon Sep 17 00:00:00 2001 From: luorijun Date: Tue, 14 Oct 2025 14:38:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=85=8D=E7=BD=AE=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actions/stats.ts | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/actions/stats.ts b/src/actions/stats.ts index 8e35250..06f778f 100644 --- a/src/actions/stats.ts +++ b/src/actions/stats.ts @@ -119,8 +119,23 @@ export async function getGatewayConfig(page?: number, filters?: { page = filters?.mac ? 1 : Math.max(1, page || 1) + const condition = filters ? and( + filters.mac ? eq(gateway.macaddr, filters.mac) : undefined, + filters.public ? eq(edge.public, filters.public) : undefined, + filters.city ? eq(cityhash.city, filters.city) : undefined, + filters.user ? eq(gateway.user, filters.user) : undefined, + filters.inner_ip ? eq(gateway.network, filters.inner_ip) : undefined, + ) : undefined + const [total, result] = await Promise.all([ - drizzle.$count(gateway, filters?.mac ? eq(gateway.macaddr, filters?.mac) : undefined), + drizzle + .select({ + value: count(), + }) + .from(gateway) + .leftJoin(cityhash, eq(cityhash.hash, gateway.cityhash)) + .leftJoin(edge, eq(edge.macaddr, gateway.edge)) + .where(condition), drizzle .select({ city: cityhash.city, @@ -134,13 +149,7 @@ export async function getGatewayConfig(page?: number, filters?: { .from(gateway) .leftJoin(cityhash, eq(cityhash.hash, gateway.cityhash)) .leftJoin(edge, eq(edge.macaddr, gateway.edge)) - .where(filters ? and( - filters.mac ? eq(gateway.macaddr, filters.mac) : undefined, - filters.public ? eq(edge.public, filters.public) : undefined, - filters.city ? eq(cityhash.city, filters.city) : undefined, - filters.user ? eq(gateway.user, filters.user) : undefined, - filters.inner_ip ? eq(gateway.network, filters.inner_ip) : undefined, - ) : undefined) + .where(condition) .orderBy(sql`inet_aton(gateway.inner_ip)`) .offset((page - 1) * 250) .limit(250), @@ -148,7 +157,7 @@ export async function getGatewayConfig(page?: number, filters?: { return { success: true, data: { - total, + total: total[0].value, page, size: 250, items: result,