Add WifiStats to GraphQL server

This commit is contained in:
Douglas Barone 2022-06-14 14:49:19 +00:00
parent 05159d91a6
commit 2f6ee379c5
5 changed files with 56 additions and 3 deletions

View File

@ -98,6 +98,10 @@ export async function deleteOldStats() {
message: `${stats.count} estatísticas com mais de ${DAYS_TO_KEEP} dias deletadas.` message: `${stats.count} estatísticas com mais de ${DAYS_TO_KEEP} dias deletadas.`
}) })
} catch (e) { } catch (e) {
console.log(e) logError({
tags: ['wifiStats', 'deleteOldStats'],
message: 'Erro ao deletar estatísticas antigas',
data: e
})
} }
} }

View File

@ -18,5 +18,21 @@ export const AccessPoint = {
}, },
subnetInfo: parent => getSubnetInfo(parent.ip), subnetInfo: parent => getSubnetInfo(parent.ip),
usage: (parent, data, context, info) => parent.usage.toString() usage: (parent, data, context, info) => parent.usage.toString(),
stats: async (parent, { take, dateIn, dateOut }, context, info) =>
prisma.wifiStats.findMany({
where: {
accessPoint: {
id: parent.id
}
},
take
}),
latestStats: async (parent, data, context, info) =>
prisma.wifiStats.findFirst({
where: { accessPoint: { id: parent.id } },
orderBy: { timestamp: 'desc' }
})
} }

View File

@ -0,0 +1,6 @@
const WifiStats = {
avgUsage: parent => parent.avgUsage.toString(),
sumUsage: parent => parent.sumUsage.toString()
}
export { WifiStats }

View File

@ -11,6 +11,7 @@ import { Stats } from './Stats'
import { User } from './User' import { User } from './User'
import { UserPresence } from './UserPresence' import { UserPresence } from './UserPresence'
import { WifiDevice } from './WifiDevice' import { WifiDevice } from './WifiDevice'
import { WifiStats } from './WifiStats'
const resolvers = { const resolvers = {
Mutation, Mutation,
@ -25,7 +26,8 @@ const resolvers = {
Stats, Stats,
User, User,
UserPresence, UserPresence,
WifiDevice WifiDevice,
WifiStats
} }
export { resolvers } export { resolvers }

View File

@ -327,6 +327,31 @@ const typeDefs = gql`
createdAt: String createdAt: String
updatedAt: String updatedAt: String
wifiDevices: [WifiDevice] wifiDevices: [WifiDevice]
stats(take: Int = 50, dateIn: String, dateOut: String): [WifiStats!]!
latestStats: WifiStats!
}
"A Wireless Access Point stats"
type WifiStats {
id: ID!
timestamp: String
clients: Int
avgSignalStrength: Int
minSignalStrength: Int
maxSignalStrength: Int
avgSpeed: Int
minSpeed: Int
maxSpeed: Int
avgClientUptime: Int
maxClientUptime: Int
avgUsage: String
sumUsage: String
} }
"A WiFi Device Search result" "A WiFi Device Search result"