diff --git a/server/src/resolvers/AccessPoint.js b/server/src/resolvers/AccessPoint.js index c57632a..32c66a2 100644 --- a/server/src/resolvers/AccessPoint.js +++ b/server/src/resolvers/AccessPoint.js @@ -1,6 +1,6 @@ import prisma from '../prisma' import { getSubnetInfo } from '../lib/subnetInfo' -import { subDays, subMinutes } from 'date-fns' +import { subMinutes } from 'date-fns' import { distributedCopy } from '../utils/distributedCopy' export const AccessPoint = { diff --git a/server/src/resolvers/SubnetInfo.js b/server/src/resolvers/SubnetInfo.js index b2cb4d8..5704462 100644 --- a/server/src/resolvers/SubnetInfo.js +++ b/server/src/resolvers/SubnetInfo.js @@ -1,13 +1,24 @@ import prisma from '../prisma' +import { distributedCopy } from '../utils/distributedCopy' +import { subMinutes } from 'date-fns' -export const SubnetInfo = { - stats: async (parent, args, context) => { - return prisma.networkStats.findMany({ +const SubnetInfo = { + stats: async (parent, { take, minutesIn = 60, dateOut }, context) => { + const dateIn = subMinutes(dateOut || Date.now(), minutesIn) + + const stats = await prisma.networkStats.findMany({ where: { network: { id: parent.id - } + }, + timestamp: { gte: dateIn, lte: dateOut } } }) + + if (take) return distributedCopy(stats, take) + + return stats } } + +export { SubnetInfo } diff --git a/server/src/resolvers/SubnetStats.js b/server/src/resolvers/SubnetStats.js new file mode 100644 index 0000000..273b1d0 --- /dev/null +++ b/server/src/resolvers/SubnetStats.js @@ -0,0 +1,7 @@ +const SubnetStats = { + timestamp: parent => parent.timestamp?.toString(), + avgUsage: parent => parent.avgUsage?.toString(), + sumUsage: parent => parent.sumUsage?.toString() +} + +export { SubnetStats } diff --git a/server/src/resolvers/index.js b/server/src/resolvers/index.js index ed086ad..fbe1cfb 100755 --- a/server/src/resolvers/index.js +++ b/server/src/resolvers/index.js @@ -13,6 +13,7 @@ import { UserPresence } from './UserPresence' import { WifiDevice } from './WifiDevice' import { AccessPointStats } from './AccessPointStats' import { SubnetInfo } from './SubnetInfo' +import { SubnetStats } from './SubnetStats' const resolvers = { Mutation, @@ -26,6 +27,7 @@ const resolvers = { ResetToken, Stats, SubnetInfo, + SubnetStats, User, UserPresence, WifiDevice, diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index c84faae..42db1a9 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -371,8 +371,8 @@ const typeDefs = gql` id: ID! timestamp: String clients: Int - avgUsage: Int - sumUsage: Int + avgUsage: String + sumUsage: String } "A WiFi Device Search result"