Optimize Status Jobs
This commit is contained in:
parent
c2476ba74a
commit
0955cce688
25
src/index.ts
25
src/index.ts
|
@ -1,9 +1,7 @@
|
|||
import 'dotenv/config'
|
||||
import * as path from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
import { app } from './server.js'
|
||||
import Bree from 'bree'
|
||||
import { jobs } from './jobs.js'
|
||||
|
||||
const PORT = process.env.PORT || 8000
|
||||
|
||||
|
@ -16,22 +14,5 @@ app.listen(PORT, () => {
|
|||
)
|
||||
})
|
||||
|
||||
// Jobs
|
||||
const bree = new Bree({
|
||||
root: path.join(path.dirname(fileURLToPath(import.meta.url)), 'jobs'),
|
||||
defaultExtension: process.env.NODE_ENV == 'production' ? 'js' : 'ts',
|
||||
logger: false,
|
||||
jobs: [
|
||||
{
|
||||
name: 'updatePrinterStatus',
|
||||
interval: process.env.UPDATE_INTERVAL || '10m',
|
||||
timeout: 0
|
||||
},
|
||||
{
|
||||
name: 'discoverPrinters',
|
||||
cron: '0 */12 * * *'
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
bree.start()
|
||||
// Start jobs
|
||||
jobs.start()
|
||||
|
|
20
src/jobs.ts
Normal file
20
src/jobs.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
import * as path from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import Bree from 'bree'
|
||||
|
||||
export const jobs = new Bree({
|
||||
root: path.join(path.dirname(fileURLToPath(import.meta.url)), 'jobs'),
|
||||
defaultExtension: process.env.NODE_ENV == 'production' ? 'js' : 'ts',
|
||||
logger: false,
|
||||
jobs: [
|
||||
{
|
||||
name: 'updatePrinterStatus',
|
||||
interval: process.env.UPDATE_INTERVAL || '1m',
|
||||
timeout: 0
|
||||
},
|
||||
{
|
||||
name: 'discoverPrinters',
|
||||
cron: '0 */12 * * *'
|
||||
}
|
||||
]
|
||||
})
|
|
@ -45,11 +45,30 @@ export type PrinterInfo = {
|
|||
export class PrinterStatusService {
|
||||
constructor(private printer: Printer) {
|
||||
this.getPrinterInfo().then(async printerStatus => {
|
||||
if (this.printer.serialNumber)
|
||||
const lastStatus = await prisma.printerStatus.findFirst({
|
||||
where: { printerId: this.printer.id },
|
||||
orderBy: { timestamp: 'desc' }
|
||||
})
|
||||
|
||||
if (
|
||||
lastStatus?.counter == printerStatus.counter &&
|
||||
lastStatus?.tonerBlackLevel == printerStatus.toners.black.level &&
|
||||
lastStatus?.tonerCyanLevel == printerStatus.toners.cyan?.level &&
|
||||
lastStatus?.tonerMagentaLevel == printerStatus.toners.magenta?.level &&
|
||||
lastStatus?.tonerYellowLevel == printerStatus.toners.yellow?.level
|
||||
) {
|
||||
await prisma.printerStatus.update({
|
||||
where: { id: lastStatus.id },
|
||||
data: { timestamp: new Date() }
|
||||
})
|
||||
} else {
|
||||
console.log(
|
||||
`Updating printer status ${this.printer.serialNumber} (${this.printer.ip}). Counter:${lastStatus?.counter} to ${printerStatus.counter}`
|
||||
)
|
||||
|
||||
await prisma.printer.update({
|
||||
where: { serialNumber: this.printer.serialNumber },
|
||||
data: {
|
||||
serialNumber: printerStatus.serialNumber,
|
||||
location: printerStatus.location,
|
||||
blackTonerModel: printerStatus.toners.black.model,
|
||||
cyanTonerModel: printerStatus.toners.cyan?.model,
|
||||
|
@ -67,6 +86,7 @@ export class PrinterStatusService {
|
|||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user