chore: Add MonitorController for printer status monitoring

This commit is contained in:
Douglas Barone 2024-08-13 09:20:35 -04:00
parent 213ba6f4ca
commit 99297682e3
2 changed files with 32 additions and 0 deletions

View File

@ -0,0 +1,30 @@
import { Router, Request, Response } from 'express'
import { prisma } from '../prisma.js'
const router = Router()
class MonitorController {
static async status(req: Request, res: Response) {
// If last status has a toner level below 20%, send an alert
const { printerId } = req.params
const status = await prisma.printerStatus.findFirst({
where: {
printer: {
serialNumber: printerId
}
},
orderBy: { timestamp: 'desc' }
})
if (status?.tonerBlackLevel && status.tonerBlackLevel < 25) {
res.send('low toner')
} else {
res.send('ok')
}
}
}
router.get('/:printerId', MonitorController.status)
export default router

View File

@ -10,6 +10,7 @@ import PrinterRouter from './controllers/PrinterController.js'
import PrinterStatusRouter from './controllers/PrinterStatusController.js'
import PrinterDiscoveryRouter from './controllers/PrinterDiscoveryController.js'
import EventsRouter from './controllers/EventsController.js'
import MonitorController from './controllers/MonitorController.js'
export const app = express()
@ -29,6 +30,7 @@ app.use('/api/printer', PrinterRouter)
app.use('/api/status', PrinterStatusRouter)
app.use('/api/discovery', PrinterDiscoveryRouter)
app.use('/api/events', EventsRouter)
app.use('/api/monitor', MonitorController)
app.use('/', express.static('public'))