From ba47a68012ccc1705e34eeb04d7c2314aa0361da Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Thu, 24 Mar 2022 13:24:58 -0400 Subject: [PATCH] Added accessPoints query --- .../migration.sql | 1 + server/prisma/schema.prisma | 1 + server/src/lib/accessPoints.js | 9 +++++++-- server/src/lib/ciscoController.js | 7 ++++--- server/src/lib/unifiController.js | 6 ++++-- server/src/resolvers/Query/accessPoints.js | 9 +++++++++ server/src/resolvers/Query/index.js | 2 ++ server/src/typeDefs.js | 5 +++++ 8 files changed, 33 insertions(+), 7 deletions(-) rename server/prisma/migrations/{20220324164355_add_access_point_model => 20220324171917_add_access_point_model}/migration.sql (98%) create mode 100644 server/src/resolvers/Query/accessPoints.js diff --git a/server/prisma/migrations/20220324164355_add_access_point_model/migration.sql b/server/prisma/migrations/20220324171917_add_access_point_model/migration.sql similarity index 98% rename from server/prisma/migrations/20220324164355_add_access_point_model/migration.sql rename to server/prisma/migrations/20220324171917_add_access_point_model/migration.sql index 2df6301..30f9faf 100644 --- a/server/prisma/migrations/20220324164355_add_access_point_model/migration.sql +++ b/server/prisma/migrations/20220324171917_add_access_point_model/migration.sql @@ -22,6 +22,7 @@ CREATE TABLE "AccessPoint" ( "controller" TEXT, "model" TEXT, "ipAddress" TEXT, + "clients" INTEGER, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index 95e1d03..f7881f3 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -151,6 +151,7 @@ model AccessPoint { controller String? model String? ipAddress String? + clients Int? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt diff --git a/server/src/lib/accessPoints.js b/server/src/lib/accessPoints.js index e84ccc7..0fba8c3 100644 --- a/server/src/lib/accessPoints.js +++ b/server/src/lib/accessPoints.js @@ -3,8 +3,13 @@ import { getAccessPoints as getCiscoAccessPoints } from './ciscoController' import { getAccessPoints as getUnifiAccessPoints } from './unifiController' async function getAccessPoints() { - const ciscoAccessPoints = await getCiscoAccessPoints() - const unifiAccessPoints = await getUnifiAccessPoints() + const ciscoAccessPointsPromise = getCiscoAccessPoints() + const unifiAccessPointsPromise = getUnifiAccessPoints() + + const [ciscoAccessPoints, unifiAccessPoints] = await Promise.all([ + ciscoAccessPointsPromise, + unifiAccessPointsPromise + ]) return [...ciscoAccessPoints, ...unifiAccessPoints] } diff --git a/server/src/lib/ciscoController.js b/server/src/lib/ciscoController.js index bc8cd79..7c9517a 100644 --- a/server/src/lib/ciscoController.js +++ b/server/src/lib/ciscoController.js @@ -127,7 +127,7 @@ export async function getAccessPoints() { const { data: { Data: accessPoints } } = await ciscoAxios.get( - `https://${process.env.CISCO_HOST}/data/ap-attributes-slot0.html?columns=28157`, + `https://${process.env.CISCO_HOST}/data/ap-attributes-slot0.html?columns=49151`, { cancelToken: source.token } @@ -136,13 +136,14 @@ export async function getAccessPoints() { clearTimeout(timeout) const restructuredAccessPoints = accessPoints.map( - ({ Nm, Mc, Md, Ut, A4 }) => ({ + ({ Nm, Mc, Md, Ut, A4, Cl }) => ({ mac: Mc, hostname: Nm, uptime: Ut.toString(), controller: 'Cisco', model: Md, - ipAddress: A4 + ipAddress: A4, + clients: Cl }) ) diff --git a/server/src/lib/unifiController.js b/server/src/lib/unifiController.js index 21cada5..bea4c97 100644 --- a/server/src/lib/unifiController.js +++ b/server/src/lib/unifiController.js @@ -212,15 +212,17 @@ export async function getAccessPoints() { const accessPoints = await unifiController.getAccessDevices('default') const restructuredAccessPoints = accessPoints[0].map( - ({ mac, model, ip, uptime, name }) => ({ + ({ mac, model, ip, uptime, name, num_sta }) => ({ mac, hostname: name, uptime: uptime?.toString(), controller: 'UniFi', model, - ipAddress: ip + ipAddress: ip, + clients: num_sta }) ) + unifiController.logout() return restructuredAccessPoints diff --git a/server/src/resolvers/Query/accessPoints.js b/server/src/resolvers/Query/accessPoints.js new file mode 100644 index 0000000..19852d5 --- /dev/null +++ b/server/src/resolvers/Query/accessPoints.js @@ -0,0 +1,9 @@ +import prisma from '../../prisma' + +export async function accessPoints() { + return prisma.accessPoint.findMany({ + orderBy: { + hostname: 'asc' + } + }) +} diff --git a/server/src/resolvers/Query/index.js b/server/src/resolvers/Query/index.js index 2415cda..24b7257 100644 --- a/server/src/resolvers/Query/index.js +++ b/server/src/resolvers/Query/index.js @@ -1,3 +1,4 @@ +import { accessPoints } from './accessPoints' import { basicUser } from './basicUser' import { groups } from './groups' import { logs } from './logs' @@ -11,6 +12,7 @@ import { wifiDevices } from './wifiDevices' import { wifiUsers } from './wifiUsers' const Query = { + accessPoints, basicUser, groups, logs, diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index 2e83653..ec0ba0b 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -294,6 +294,11 @@ const typeDefs = gql` name: String local: String notes: String + uptime: String + controller: String + model: String + ipAddress: String + createdAt: String updatedAt: String WifiDevices: [WifiDevice]