UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint manager to set up, configure and monitor 3D printers. Our aim is to provide extremely optimized websocket performance and reliability.

74 lines (73 loc) 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "PrinterFileCleanTask", { enumerable: true, get: function() { return PrinterFileCleanTask; } }); class PrinterFileCleanTask { printerCache; printerFilesStore; settingsStore; logger; constructor(loggerFactory, printerCache, printerFilesStore, settingsStore){ this.printerCache = printerCache; this.printerFilesStore = printerFilesStore; this.settingsStore = settingsStore; this.logger = loggerFactory(PrinterFileCleanTask.name); } get ageDaysMaxSetting() { return this.getSettings().autoRemoveOldFilesCriteriumDays; } async run() { const printers = await this.printerCache.listCachedPrinters(false); const fileCleanSettings = this.getSettings(); const autoCleanAtBootEnabled = fileCleanSettings.autoRemoveOldFilesAtBoot; try { if (autoCleanAtBootEnabled) { this.logger.log(`Cleaning files of ${printers.length} active printers [printerFileClean:autoRemoveOldFilesAtBoot].`); } else { this.logger.log(`Reporting about old files of ${printers.length} printers.`); } const errorPrinters = []; for (let printer of printers){ try { await this.printerFilesStore.loadFiles(printer.id); } catch (e) { errorPrinters.push({ e, printer }); } } if (errorPrinters.length > 0) { this.logger.error(`Error loading some files, ${errorPrinters.length} printer(s) did not respond or returned an unexpected status code.`); } for (let printer of printers){ const outdatedFiles = this.getPrinterOutdatedFiles(printer); if (!outdatedFiles?.length) continue; this.logger.log(`Found ${outdatedFiles?.length} old files of printer`); if (autoCleanAtBootEnabled) { await this.cleanPrinterFiles(printer.id); } } } finally{ this.logger.log(`Printer old file analysis job ended`); } } async cleanPrinterFiles(printerId) { await this.printerFilesStore.deleteOutdatedFiles(printerId, this.ageDaysMaxSetting); await this.printerFilesStore.loadFiles(printerId); } getPrinterOutdatedFiles(printer) { const ageDaysMax = this.ageDaysMaxSetting; return this.printerFilesStore.getOutdatedFiles(printer.id, ageDaysMax); } getSettings() { return this.settingsStore.getFileCleanSettings(); } } //# sourceMappingURL=printer-file-clean.task.js.map