From b9b40c55ca7dec8a32d21ee4a74e99695ac58493 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sun, 17 May 2026 19:11:33 +0100 Subject: [PATCH] Numerious fixes. --- src/database/schemas/inventory/filamentstock.schema.js | 8 ++++++++ src/database/schemas/production/gcodefile.schema.js | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/database/schemas/inventory/filamentstock.schema.js b/src/database/schemas/inventory/filamentstock.schema.js index 67938a6..e9743fa 100644 --- a/src/database/schemas/inventory/filamentstock.schema.js +++ b/src/database/schemas/inventory/filamentstock.schema.js @@ -19,6 +19,7 @@ const filamentStockSchema = new Schema( net: { type: Number, required: true }, gross: { type: Number, required: true }, }, + filament: { type: mongoose.Schema.Types.ObjectId, ref: 'filament', required: true }, filamentSku: { type: mongoose.Schema.Types.ObjectId, ref: 'filamentSku', required: true }, stockLocation: { type: mongoose.Schema.Types.ObjectId, @@ -29,6 +30,13 @@ const filamentStockSchema = new Schema( { timestamps: true } ); +filamentStockSchema.pre('validate', async function () { + if (!this.filament && this.filamentSku) { + const sku = await mongoose.model('filamentSku').findById(this.filamentSku).select('filament').lean(); + if (sku?.filament) this.filament = sku.filament; + } +}); + const rollupConfigs = [ { name: 'totalCurrentWeight', diff --git a/src/database/schemas/production/gcodefile.schema.js b/src/database/schemas/production/gcodefile.schema.js index c2776ce..acd137b 100644 --- a/src/database/schemas/production/gcodefile.schema.js +++ b/src/database/schemas/production/gcodefile.schema.js @@ -14,6 +14,7 @@ const gcodeFileSchema = new mongoose.Schema( name: { required: true, type: String }, gcodeFileName: { required: false, type: String }, size: { type: Number, required: false }, + filament: { type: Schema.Types.ObjectId, ref: 'filament', required: true }, filamentSku: { type: Schema.Types.ObjectId, ref: 'filamentSku', required: true }, parts: [partSchema], file: { type: mongoose.SchemaTypes.ObjectId, ref: 'file', required: false }, @@ -22,6 +23,13 @@ const gcodeFileSchema = new mongoose.Schema( { timestamps: true } ); +gcodeFileSchema.pre('validate', async function () { + if (!this.filament && this.filamentSku) { + const sku = await mongoose.model('filamentSku').findById(this.filamentSku).select('filament').lean(); + if (sku?.filament) this.filament = sku.filament; + } +}); + gcodeFileSchema.index({ name: 'text', brand: 'text' }); gcodeFileSchema.virtual('id').get(function () {