diff --git a/server/src/lib/wifiStats.js b/server/src/lib/wifiStats.js index 5597a66..8ae551b 100644 --- a/server/src/lib/wifiStats.js +++ b/server/src/lib/wifiStats.js @@ -98,6 +98,10 @@ export async function deleteOldStats() { message: `${stats.count} estatísticas com mais de ${DAYS_TO_KEEP} dias deletadas.` }) } catch (e) { - console.log(e) + logError({ + tags: ['wifiStats', 'deleteOldStats'], + message: 'Erro ao deletar estatísticas antigas', + data: e + }) } } diff --git a/server/src/resolvers/AccessPoint.js b/server/src/resolvers/AccessPoint.js index 0ce6a98..0820cde 100644 --- a/server/src/resolvers/AccessPoint.js +++ b/server/src/resolvers/AccessPoint.js @@ -18,5 +18,21 @@ export const AccessPoint = { }, 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' } + }) } diff --git a/server/src/resolvers/WifiStats.js b/server/src/resolvers/WifiStats.js new file mode 100644 index 0000000..75aaaae --- /dev/null +++ b/server/src/resolvers/WifiStats.js @@ -0,0 +1,6 @@ +const WifiStats = { + avgUsage: parent => parent.avgUsage.toString(), + sumUsage: parent => parent.sumUsage.toString() +} + +export { WifiStats } diff --git a/server/src/resolvers/index.js b/server/src/resolvers/index.js index 4ddaaa9..ed5e1b6 100755 --- a/server/src/resolvers/index.js +++ b/server/src/resolvers/index.js @@ -11,6 +11,7 @@ import { Stats } from './Stats' import { User } from './User' import { UserPresence } from './UserPresence' import { WifiDevice } from './WifiDevice' +import { WifiStats } from './WifiStats' const resolvers = { Mutation, @@ -25,7 +26,8 @@ const resolvers = { Stats, User, UserPresence, - WifiDevice + WifiDevice, + WifiStats } export { resolvers } diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index aededc5..648217b 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -327,6 +327,31 @@ const typeDefs = gql` createdAt: String updatedAt: String 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"