From 65db6b57ba9f072abf4321f7fa7b20520d64850d Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Thu, 20 Oct 2022 14:46:08 -0400 Subject: [PATCH] Order by online devices --- server/src/resolvers/Query/wifiUsers.js | 34 +++++++++++++++++-------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/server/src/resolvers/Query/wifiUsers.js b/server/src/resolvers/Query/wifiUsers.js index 64d1270..341523c 100644 --- a/server/src/resolvers/Query/wifiUsers.js +++ b/server/src/resolvers/Query/wifiUsers.js @@ -34,17 +34,29 @@ export async function wifiUsers(parent, { take = 10, skip = 0, search }) { ] } - return { - data: prisma.user.findMany({ - where, - include: { - wifiDevices: true - }, - orderBy: [{ wifiDevices: { _count: 'desc' } }, { displayName: 'asc' }], - take, - skip - }), + const wifiUsers = await prisma.user.findMany({ + where, + include: { + wifiDevices: true + }, + orderBy: [{ wifiDevices: { _count: 'desc' } }, { displayName: 'asc' }] + }) - total: prisma.user.count({ where }) + // Order by number of online devices + const sortedWifiUsers = wifiUsers.sort((a, b) => { + const aOnline = a.wifiDevices.filter(d => d.status === 'ONLINE').length + const bOnline = b.wifiDevices.filter(d => d.status === 'ONLINE').length + + return bOnline - aOnline + }) + + // Paginate the results + const data = sortedWifiUsers.slice(skip, skip + take) + + const total = await prisma.user.count({ where }) + + return { + data, + total } }