Modified schemas.

This commit is contained in:
Tom Butcher 2025-12-03 00:07:58 +00:00
parent 7f17f5f205
commit 5dd4d9275b
5 changed files with 93 additions and 4 deletions

View File

@ -0,0 +1,44 @@
import mongoose from 'mongoose';
import { generateId } from '../../utils.js';
const { Schema } = mongoose;
const purchaseOrderSchema = new Schema(
{
_reference: { type: String, default: () => generateId()() },
value: { type: Number, required: true },
unit: { type: String, required: true },
parent: {
type: Schema.Types.ObjectId,
refPath: 'parentType',
required: true,
},
parentType: {
type: String,
required: true,
enum: ['filamentStock', 'partStock', 'productStock'], // Add other models as needed
},
owner: {
type: Schema.Types.ObjectId,
refPath: 'ownerType',
required: true,
},
ownerType: {
type: String,
required: true,
enum: ['user', 'subJob', 'stockAudit'],
},
timestamp: { type: Date, default: Date.now },
},
{ timestamps: true }
);
// Add virtual id getter
purchaseOrderSchema.virtual('id').get(function () {
return this._id;
});
// Configure JSON serialization to include virtuals
purchaseOrderSchema.set('toJSON', { virtuals: true });
// Create and export the model
export const purchaseOrderModel = mongoose.model('purchaseOrder', purchaseOrderSchema);

View File

@ -0,0 +1,44 @@
import mongoose from 'mongoose';
import { generateId } from '../../utils.js';
const { Schema } = mongoose;
const stockEventSchema = new Schema(
{
_reference: { type: String, default: () => generateId()() },
value: { type: Number, required: true },
unit: { type: String, required: true },
parent: {
type: Schema.Types.ObjectId,
refPath: 'parentType',
required: true,
},
parentType: {
type: String,
required: true,
enum: ['filamentStock', 'partStock', 'productStock'], // Add other models as needed
},
owner: {
type: Schema.Types.ObjectId,
refPath: 'ownerType',
required: true,
},
ownerType: {
type: String,
required: true,
enum: ['user', 'subJob', 'stockAudit'],
},
timestamp: { type: Date, default: Date.now },
},
{ timestamps: true }
);
// Add virtual id getter
stockEventSchema.virtual('id').get(function () {
return this._id;
});
// Configure JSON serialization to include virtuals
stockEventSchema.set('toJSON', { virtuals: true });
// Create and export the model
export const stockEventModel = mongoose.model('stockEvent', stockEventSchema);

View File

@ -32,6 +32,7 @@ const documentPrinterSchema = new Schema(
},
connectedAt: { type: Date, default: null },
host: { type: Schema.Types.ObjectId, ref: 'host', required: true },
vendor: { type: Schema.Types.ObjectId, ref: 'vendor', required: false },
queue: [{ type: Schema.Types.ObjectId, ref: 'documentJob', required: false }],
},
{ timestamps: true }

View File

@ -12,8 +12,8 @@ const jobSchema = new mongoose.Schema(
printers: [{ type: Schema.Types.ObjectId, ref: 'printer', required: false }],
createdAt: { required: true, type: Date },
updatedAt: { required: true, type: Date },
startedAt: { required: false, type: Date },
finishedAt: { required: false, type: Date },
startedAt: { required: false, type: Date, default: null },
finishedAt: { required: false, type: Date, default: null },
gcodeFile: {
type: Schema.Types.ObjectId,
ref: 'gcodeFile',

View File

@ -39,8 +39,8 @@ const subJobSchema = new mongoose.Schema({
type: Date,
default: Date.now,
},
startedAt: { required: false, type: Date },
finishedAt: { required: false, type: Date },
startedAt: { required: false, type: Date, default: null },
finishedAt: { required: false, type: Date, default: null },
});
subJobSchema.virtual('id').get(function () {