From 12e9cb4652962eebf10a5c9232b48cc8b8bf1d63 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Mon, 3 Jul 2017 13:48:44 +0800 Subject: [PATCH] feat(forums): add forum topic server model --- .../server/models/topic.server.model.js | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 modules/forums/server/models/topic.server.model.js diff --git a/modules/forums/server/models/topic.server.model.js b/modules/forums/server/models/topic.server.model.js new file mode 100644 index 00000000..b616d153 --- /dev/null +++ b/modules/forums/server/models/topic.server.model.js @@ -0,0 +1,101 @@ +'use strict'; + +/** + * Module dependencies + */ +var mongoose = require('mongoose'), + Schema = mongoose.Schema; + +/** + * Sub Attach Schema + */ +var AttachSchema = new Schema({ + filename: { + type: String, + default: '', + trim: true + }, + downCount: { + type: Number, + default: 0 + }, + createdAt: { + type: Date, + default: Date.now + } +}); + +/** + * Sub Score Schema + */ +var ScoreSchema = new Schema({ + user: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + score: { + type: Number, + default: 0 + }, + createdAt: { + type: Date, + default: Date.now + } +}); + + +/** + * Topic Schema + */ +var TopicSchema = new Schema({ + user: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + title: { + type: String, + default: '', + trim: true + }, + content: { + type: String, + default: '', + trim: true + }, + readOnly: { + type: Boolean, + default: false + }, + + viewCount: { + type: Number, + default: 0 + }, + replyCount: { + type: Number, + default: 0 + }, + _replies: [this], + _attach: [AttachSchema], + _scoreList: [ScoreSchema], + + lastUser: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + lastReplyAt: { + type: Date + }, + updatedAt: { + type: Date + }, + createdAt: { + type: Date, + default: Date.now + } +}); + + +mongoose.model('Topic', TopicSchema); +mongoose.model('Attach', AttachSchema); +mongoose.model('Score', ScoreSchema);