forked from UKSOURCE/cms.hailearning.edu.vn
first commit
This commit is contained in:
88
models/degree.js
Normal file
88
models/degree.js
Normal file
@@ -0,0 +1,88 @@
|
||||
const mongoose = require('mongoose');
|
||||
|
||||
const degreeSchema = new mongoose.Schema({
|
||||
// Required fields
|
||||
qualification_number: {
|
||||
type: String,
|
||||
required: true,
|
||||
unique: true,
|
||||
trim: true
|
||||
},
|
||||
student_name: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true
|
||||
},
|
||||
program_name: {
|
||||
type: String,
|
||||
required: true,
|
||||
trim: true
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
enum: ['qualification', 'certification']
|
||||
},
|
||||
department: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'Department',
|
||||
required: true
|
||||
},
|
||||
level: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: 'Level',
|
||||
required: true
|
||||
},
|
||||
issued_date: {
|
||||
type: Date,
|
||||
required: true
|
||||
},
|
||||
status: {
|
||||
type: String,
|
||||
enum: ['active', 'revoked'],
|
||||
default: 'active'
|
||||
},
|
||||
|
||||
// Optional fields
|
||||
certification_number: {
|
||||
type: String,
|
||||
trim: true,
|
||||
},
|
||||
passport_number: {
|
||||
type: String,
|
||||
trim: true
|
||||
},
|
||||
address: {
|
||||
type: String,
|
||||
trim: true
|
||||
},
|
||||
topic_name: {
|
||||
type: String,
|
||||
trim: true
|
||||
},
|
||||
topic_short_desc: {
|
||||
type: String,
|
||||
trim: true
|
||||
},
|
||||
degree_image: {
|
||||
type: String
|
||||
},
|
||||
certificate_image: {
|
||||
type: String
|
||||
}
|
||||
}, {
|
||||
timestamps: true
|
||||
});
|
||||
|
||||
// Indexes
|
||||
degreeSchema.index({ certification_number: 1 }, { unique: true, sparse: true });
|
||||
|
||||
// Pre-save hook: certification type requires certification_number
|
||||
degreeSchema.pre('save', function (next) {
|
||||
if (this.type === 'certification' && !this.certification_number) {
|
||||
return next(new Error('certification_number is required for certification type'));
|
||||
}
|
||||
next();
|
||||
});
|
||||
|
||||
module.exports = mongoose.model('Degree', degreeSchema);
|
||||
Reference in New Issue
Block a user