Added recalculation logic to printer schema for managing printer states based on activity and online status. Integrated editObject utility for state updates, enhancing printer state management.

This commit is contained in:
Tom Butcher 2026-07-26 19:40:16 +01:00
parent 02a05231d1
commit 0b3a911611

View File

@ -1,7 +1,7 @@
import mongoose from 'mongoose';
import { generateId } from '../../utils.js';
const { Schema } = mongoose;
import { aggregateRollups, aggregateRollupsHistory } from '../../database.js';
import { aggregateRollups, aggregateRollupsHistory, editObject } from '../../database.js';
// Define the moonraker connection schema
const moonrakerSchema = new Schema(
@ -123,6 +123,28 @@ printerSchema.statics.history = async function (from, to) {
return results;
};
printerSchema.statics.recalculate = async function (printer, user) {
if (printer.active === false && printer.state?.type !== 'inactive') {
await editObject({
model: this,
id: printer._id,
updateData: { state: { type: 'inactive' } },
user,
recalculate: false,
});
return;
}
if (printer.active === true && printer.state?.type === 'inactive' && printer.online === false) {
await editObject({
model: this,
id: printer._id,
updateData: { state: { type: 'offline' } },
user,
recalculate: false,
});
}
};
// Add virtual id getter
printerSchema.virtual('id').get(function () {
return this._id;