Add sessionHolding template, unique 8-digit codes, reason slot for sessionCancelled, and disable unused notifications
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
|
||||
const { generateUniqueCode } = require('./uniqueCode');
|
||||
|
||||
/**
|
||||
* Mongoose plugin: auto-assigns an 8-digit uniqueCode before validation if missing.
|
||||
*/
|
||||
const uniqueCodePlugin = (schema, options = {}) => {
|
||||
const field = options.field || 'uniqueCode';
|
||||
|
||||
schema.add({
|
||||
[field]: {
|
||||
type: String,
|
||||
unique: true,
|
||||
sparse: true,
|
||||
trim: true,
|
||||
index: true
|
||||
}
|
||||
});
|
||||
|
||||
schema.pre('validate', async function assignUniqueCode(next) {
|
||||
if (this[field]) return next();
|
||||
try {
|
||||
this[field] = await generateUniqueCode(this.constructor, field);
|
||||
return next();
|
||||
} catch (err) {
|
||||
return next(err);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = uniqueCodePlugin;
|
||||
Reference in New Issue
Block a user