Order by online devices

This commit is contained in:
Douglas Barone 2022-10-20 14:46:08 -04:00
parent 516c207107
commit 65db6b57ba

View File

@ -34,17 +34,29 @@ export async function wifiUsers(parent, { take = 10, skip = 0, search }) {
] ]
} }
return { const wifiUsers = await prisma.user.findMany({
data: prisma.user.findMany({ where,
where, include: {
include: { wifiDevices: true
wifiDevices: true },
}, orderBy: [{ wifiDevices: { _count: 'desc' } }, { displayName: 'asc' }]
orderBy: [{ wifiDevices: { _count: 'desc' } }, { displayName: 'asc' }], })
take,
skip
}),
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
} }
} }