This commit is contained in:
Douglas Barone 2022-04-11 15:26:51 -04:00
parent 3b32c64bd1
commit 54d6596c81
4 changed files with 25 additions and 10 deletions

View File

@ -34,7 +34,11 @@ export async function wifiUsers(parent, { take = 100, skip = 0, search }) {
} }
] ]
}, },
include: { wifiDevices: true }, include: {
wifiDevices: {
include: { accessPoint: true }
}
},
orderBy: [ orderBy: [
{ wifiDevices: { _count: 'desc' } }, { wifiDevices: { _count: 'desc' } },
{ displayName: 'asc' }], { displayName: 'asc' }],

View File

@ -1,5 +1,7 @@
import prisma from '../prisma' import prisma from '../prisma'
import { logError } from '../lib/logger'
const WifiDevice = { const WifiDevice = {
lastSeen: parent => parent.lastSeen?.toISOString(), lastSeen: parent => parent.lastSeen?.toISOString(),
@ -16,15 +18,22 @@ const WifiDevice = {
accessPoint: async parent => { accessPoint: async parent => {
if (!parent.accessPointId && parent.apName) { if (!parent.accessPointId && parent.apName) {
await prisma.wifiDevice.update({ try {
where: { id: parent.id }, data: { await prisma.wifiDevice.update({
accessPoint: { where: { id: parent.id }, data: {
connect: { accessPoint: {
hostname: parent.apName connect: {
hostname: parent.apName
}
} }
} }
} })
}) } catch (e) {
logError({
tags: ['wifiDevice', 'accessPoint'],
message: `Failed to connect ${parent.mac} to access point ${parent.apName}`,
})
}
} }
return prisma.accessPoint.findUnique({ where: { id: parent.accessPointId } }) return prisma.accessPoint.findUnique({ where: { id: parent.accessPointId } })

View File

@ -234,7 +234,7 @@ const typeDefs = gql`
uptime: String uptime: String
apName: String apName: String
status: Status status: Status
accessPoint: AccessPoint! accessPoint: AccessPoint
} }
"A user that is on the Wi-Fi network reach" "A user that is on the Wi-Fi network reach"

View File

@ -129,7 +129,9 @@
</v-list-item-subtitle> </v-list-item-subtitle>
</v-list-item-content> </v-list-item-content>
</v-list-item> </v-list-item>
<v-list-item v-if="device.accessPoint.local"> <v-list-item
v-if="device.accessPoint && device.accessPoint.local"
>
<v-list-item-action> <v-list-item-action>
<v-icon>mdi-map-marker-radius</v-icon> <v-icon>mdi-map-marker-radius</v-icon>
</v-list-item-action> </v-list-item-action>