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 'dotenv/config'
|
||||||
import * as path from 'node:path'
|
|
||||||
import { fileURLToPath } from 'node:url'
|
|
||||||
|
|
||||||
import { app } from './server.js'
|
import { app } from './server.js'
|
||||||
import Bree from 'bree'
|
import { jobs } from './jobs.js'
|
||||||
|
|
||||||
const PORT = process.env.PORT || 8000
|
const PORT = process.env.PORT || 8000
|
||||||
|
|
||||||
|
@ -16,22 +14,5 @@ app.listen(PORT, () => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Jobs
|
// Start jobs
|
||||||
const bree = new Bree({
|
jobs.start()
|
||||||
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()
|
|
||||||
|
|
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 {
|
export class PrinterStatusService {
|
||||||
constructor(private printer: Printer) {
|
constructor(private printer: Printer) {
|
||||||
this.getPrinterInfo().then(async printerStatus => {
|
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({
|
await prisma.printer.update({
|
||||||
where: { serialNumber: this.printer.serialNumber },
|
where: { serialNumber: this.printer.serialNumber },
|
||||||
data: {
|
data: {
|
||||||
serialNumber: printerStatus.serialNumber,
|
|
||||||
location: printerStatus.location,
|
location: printerStatus.location,
|
||||||
blackTonerModel: printerStatus.toners.black.model,
|
blackTonerModel: printerStatus.toners.black.model,
|
||||||
cyanTonerModel: printerStatus.toners.cyan?.model,
|
cyanTonerModel: printerStatus.toners.cyan?.model,
|
||||||
|
@ -67,6 +86,7 @@ export class PrinterStatusService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user