Initial commit — Mek-Tech AI Consultancy Framework v2.0
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const { getDb } = require('../db');
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
const db = getDb();
|
||||
const tab = req.query.tab || 'overview';
|
||||
|
||||
const totalRacks = db.prepare('SELECT COUNT(*) as cnt FROM racks').get().cnt;
|
||||
const totalRackDevices = db.prepare('SELECT COUNT(*) as cnt FROM rack_devices').get().cnt;
|
||||
const totalNetworkDevices = db.prepare('SELECT COUNT(*) as cnt FROM network_devices').get().cnt;
|
||||
const totalConnections = db.prepare('SELECT COUNT(*) as cnt FROM network_connections').get().cnt;
|
||||
const totalDiagrams = db.prepare('SELECT COUNT(*) as cnt FROM data_diagrams').get().cnt;
|
||||
|
||||
const racksByClient = db.prepare(`
|
||||
SELECT c.name as client_name, COUNT(*) as cnt
|
||||
FROM racks r JOIN clients c ON c.id = r.client_id
|
||||
GROUP BY c.id ORDER BY cnt DESC LIMIT 10
|
||||
`).all();
|
||||
|
||||
const deviceTypes = db.prepare(`
|
||||
SELECT device_type, COUNT(*) as cnt
|
||||
FROM rack_devices GROUP BY device_type ORDER BY cnt DESC
|
||||
`).all();
|
||||
|
||||
const netDeviceTypes = db.prepare(`
|
||||
SELECT device_type, COUNT(*) as cnt
|
||||
FROM network_devices GROUP BY device_type ORDER BY cnt DESC
|
||||
`).all();
|
||||
|
||||
const diagramTypes = db.prepare(`
|
||||
SELECT diagram_type, COUNT(*) as cnt
|
||||
FROM data_diagrams GROUP BY diagram_type ORDER BY cnt DESC
|
||||
`).all();
|
||||
|
||||
const recentRacks = db.prepare(`
|
||||
SELECT r.*, c.name as client_name,
|
||||
(SELECT COUNT(*) FROM rack_devices d WHERE d.rack_id = r.id) as device_count
|
||||
FROM racks r JOIN clients c ON c.id = r.client_id
|
||||
ORDER BY r.updated_at DESC LIMIT 6
|
||||
`).all();
|
||||
|
||||
const recentDiagrams = db.prepare(`
|
||||
SELECT d.*, c.name as client_name
|
||||
FROM data_diagrams d JOIN clients c ON c.id = d.client_id
|
||||
ORDER BY d.updated_at DESC LIMIT 6
|
||||
`).all();
|
||||
|
||||
const recentNetDevices = db.prepare(`
|
||||
SELECT nd.*, c.name as client_name
|
||||
FROM network_devices nd JOIN clients c ON c.id = nd.client_id
|
||||
ORDER BY nd.updated_at DESC LIMIT 6
|
||||
`).all();
|
||||
|
||||
const racks = db.prepare(`
|
||||
SELECT r.*, c.name as client_name,
|
||||
(SELECT COUNT(*) FROM rack_devices d WHERE d.rack_id = r.id) as device_count
|
||||
FROM racks r JOIN clients c ON c.id = r.client_id ORDER BY r.updated_at DESC
|
||||
`).all();
|
||||
|
||||
const netDevices = db.prepare(`
|
||||
SELECT nd.*, c.name as client_name
|
||||
FROM network_devices nd JOIN clients c ON c.id = nd.client_id
|
||||
ORDER BY nd.updated_at DESC
|
||||
`).all();
|
||||
|
||||
const connections = db.prepare(`
|
||||
SELECT nc.*, c.name as client_name
|
||||
FROM network_connections nc JOIN clients c ON c.id = nc.client_id
|
||||
ORDER BY nc.created_at DESC
|
||||
`).all();
|
||||
|
||||
const diagrams = db.prepare(`
|
||||
SELECT d.*, c.name as client_name,
|
||||
json_array_length(d.nodes) as node_count
|
||||
FROM data_diagrams d JOIN clients c ON c.id = d.client_id
|
||||
ORDER BY d.updated_at DESC
|
||||
`).all();
|
||||
|
||||
const clients = db.prepare('SELECT id, name FROM clients ORDER BY name').all();
|
||||
const hardwareLibrary = require('../data/hardware-library');
|
||||
|
||||
res.render('infrastructure', {
|
||||
tab, racks, clients, hardwareLibrary,
|
||||
netDevices, connections, diagrams,
|
||||
totalRacks, totalRackDevices, totalNetworkDevices, totalConnections, totalDiagrams,
|
||||
racksByClient, deviceTypes, netDeviceTypes, diagramTypes,
|
||||
recentRacks, recentDiagrams, recentNetDevices
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user