完善配置查询接口

This commit is contained in:
2025-10-14 14:38:54 +08:00
parent 010990ea3c
commit 6bbaf9f904

View File

@@ -119,8 +119,23 @@ export async function getGatewayConfig(page?: number, filters?: {
page = filters?.mac ? 1 : Math.max(1, page || 1) 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([ 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 drizzle
.select({ .select({
city: cityhash.city, city: cityhash.city,
@@ -134,13 +149,7 @@ export async function getGatewayConfig(page?: number, filters?: {
.from(gateway) .from(gateway)
.leftJoin(cityhash, eq(cityhash.hash, gateway.cityhash)) .leftJoin(cityhash, eq(cityhash.hash, gateway.cityhash))
.leftJoin(edge, eq(edge.macaddr, gateway.edge)) .leftJoin(edge, eq(edge.macaddr, gateway.edge))
.where(filters ? and( .where(condition)
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)
.orderBy(sql`inet_aton(gateway.inner_ip)`) .orderBy(sql`inet_aton(gateway.inner_ip)`)
.offset((page - 1) * 250) .offset((page - 1) * 250)
.limit(250), .limit(250),
@@ -148,7 +157,7 @@ export async function getGatewayConfig(page?: number, filters?: {
return { return {
success: true, success: true,
data: { data: {
total, total: total[0].value,
page, page,
size: 250, size: 250,
items: result, items: result,