Files
gameno-api/components/certificates/certificateModel.js
T

73 lines
1.4 KiB
JavaScript

// /components/certificates/certificateModel.js
const mongoose = require('mongoose');
const uniqueCodePlugin = require('../../utils/mongooseUniqueCodePlugin');
const certificateSchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true,
index: true
},
course: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Course',
index: true
},
title: {
type: String,
required: true,
trim: true
},
issuer: {
type: String,
trim: true
},
/** Permanent object key inside the certificates bucket */
fileKey: {
type: String,
required: true,
trim: true
},
/** Original uploaded filename */
fileName: {
type: String,
trim: true
},
/** Legacy alias kept in sync with fileName */
originalName: {
type: String,
trim: true
},
/** Public URL only when the certificates bucket is public; otherwise null */
fileUrl: {
type: String,
trim: true,
default: null
},
bucket: {
type: String,
trim: true,
default: 'certificates'
},
mimeType: {
type: String,
trim: true
},
issuedAt: {
type: Date,
default: Date.now
},
isOfficial: {
type: Boolean,
default: false
}
}, {
timestamps: true
});
certificateSchema.plugin(uniqueCodePlugin);
module.exports = mongoose.model('Certificate', certificateSchema);