From c9d2f35bc0cbdfb2c25a7daafee0d48e841889c4 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sat, 12 Sep 2026 23:29:52 +0100 Subject: [PATCH] Refactor audit log and email message schemas for consistency by standardizing required fields and formatting. Ensure proper indexing and maintain functionality with minor adjustments to object references. --- .../schemas/management/auditlog.schema.js | 22 ++++++-------- .../schemas/management/emailmessage.schema.js | 29 ++++++------------- 2 files changed, 18 insertions(+), 33 deletions(-) diff --git a/src/database/schemas/management/auditlog.schema.js b/src/database/schemas/management/auditlog.schema.js index 0c07d1c..464872f 100644 --- a/src/database/schemas/management/auditlog.schema.js +++ b/src/database/schemas/management/auditlog.schema.js @@ -7,45 +7,41 @@ const auditLogSchema = new Schema( _reference: { type: String, default: () => generateId()() }, changes: { old: { type: Object, required: false }, - new: { type: Object, required: false } + new: { type: Object, required: false }, }, operation: { type: String, - required: true + required: true, }, parent: { type: Schema.Types.ObjectId, refPath: 'parentType', - required: true + required: true, }, parentType: { type: String, - required: true + required: true, }, owner: { type: Schema.Types.ObjectId, refPath: 'ownerType', - required: false + required: false, }, ownerType: { type: String, required: false, - enum: ['user', 'printer', 'host', 'marketplace'] + enum: ['user', 'printer', 'host', 'marketplace'], }, system: { type: Boolean, required: true, - default: false - } + default: false, + }, }, { timestamps: true } ); -auditLogSchema.index({ - operation: 'text', - parentType: 'text', - ownerType: 'text' -}); +auditLogSchema.index({ operation: 'text', parentType: 'text', ownerType: 'text' }); // Add virtual id getter auditLogSchema.virtual('id').get(function () { diff --git a/src/database/schemas/management/emailmessage.schema.js b/src/database/schemas/management/emailmessage.schema.js index 4152907..ee0f7a3 100644 --- a/src/database/schemas/management/emailmessage.schema.js +++ b/src/database/schemas/management/emailmessage.schema.js @@ -10,29 +10,21 @@ const emailMessageSchema = new Schema( emailTemplate: { type: Schema.Types.ObjectId, ref: 'emailTemplate', - required: true + required: true, }, objectType: { type: String, required: true }, - object: { - type: Schema.Types.ObjectId, - refPath: 'objectType', - required: true - }, + object: { type: Schema.Types.ObjectId, refPath: 'objectType', required: true }, emailAccount: { type: Schema.Types.ObjectId, ref: 'emailAccount', - required: true + required: true, }, recipientEmail: { type: String, required: true }, - recipientType: { - type: String, - enum: ['client', 'vendor'], - required: false - }, + recipientType: { type: String, enum: ['client', 'vendor'], required: false }, recipient: { type: Schema.Types.ObjectId, refPath: 'recipientType', - required: false + required: false, }, fromEmail: { type: String, required: true, immutable: true }, messageId: { type: String, required: false }, @@ -42,11 +34,11 @@ const emailMessageSchema = new Schema( state: { type: { type: String, required: true, default: 'queued' }, progress: { type: Number, required: false, default: 0 }, - message: { type: String, required: false } + message: { type: String, required: false }, }, read: { type: Boolean, required: true, default: false }, sentAt: { type: Date, required: false }, - readAt: { type: Date, required: false } + readAt: { type: Date, required: false }, }, { timestamps: true, suppressReservedKeysWarning: true } ); @@ -55,14 +47,11 @@ emailMessageSchema.index({ name: 'text', recipientEmail: 'text', fromEmail: 'text', - objectType: 'text' + objectType: 'text', }); emailMessageSchema.virtual('id').get(function () { return this._id; }); emailMessageSchema.set('toJSON', { virtuals: true }); -export const emailMessageModel = mongoose.model( - 'emailMessage', - emailMessageSchema -); +export const emailMessageModel = mongoose.model('emailMessage', emailMessageSchema);