Files
Jeobeardy/src/server/models/BoardModel.js
T
jeobeardy 600c3a1836 feat/board-option-lose-points (#4)
Reviewed-on: #4
Co-authored-by: Baer <jeobeardy@proton.me>
Co-committed-by: Baer <jeobeardy@proton.me>
2026-05-01 17:39:21 +02:00

26 lines
863 B
JavaScript

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const BoardSchema = new Schema({
ownerId: { type: Schema.Types.ObjectId, ref: "User", required: true },
name: { type: String, required: true, maxLength: 100 },
categories: { type: [Object], required: false, default: [] },
options: { type: Object, required: true, default: { losePointsOnWrong: false, lossMultiplier: 1, onlyOnBuzzer: true } }
});
// Virtual for player's URL
BoardSchema.virtual("url").get(function () {
// We don't use an arrow function as we'll need the this object
return `/board/${this._id}`;
});
BoardSchema.virtual("setFromPostObject").set( function( postObject ){
this.name = postObject.boardName;
this.categories = postObject.categories;
this.options = postObject.options;
})
// Export model
module.exports = mongoose.model("Board", BoardSchema);