Files
meanTorrent/modules/forums/server/models/topic.server.model.js

154 lines
2.2 KiB
JavaScript

'use strict';
/**
* Module dependencies
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Sub Attach Schema
*/
var AttachSchema = new Schema({
filename: {
type: String,
default: '',
trim: true
},
filesize: {
type: Number,
default: 0
},
downCount: {
type: Number,
default: 0
},
createdAt: {
type: Date,
default: Date.now
}
}, {usePushEach: true});
/**
* Sub Thumb Schema
*/
var ThumbSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
score: {
type: Number,
default: 0
},
createdAt: {
type: Date,
default: Date.now
}
}, {usePushEach: true});
/**
* Sub Reply Schema
*/
var ReplySchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
content: {
type: String,
default: '',
trim: true
},
_attach: [AttachSchema],
_thumbs: [ThumbSchema],
updatedAt: {
type: Date
},
updatedBy: {
type: Schema.Types.ObjectId,
ref: 'User'
},
createdAt: {
type: Date,
default: Date.now
}
}, {usePushEach: true});
/**
* Topic Schema
*/
var TopicSchema = new Schema({
forum: {
type: Schema.Types.ObjectId,
ref: 'Forum'
},
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: [ReplySchema],
_attach: [AttachSchema],
_thumbs: [ThumbSchema],
isTop: {
type: Boolean,
default: false
},
isGlobal: {
type: Boolean,
default: false
},
lastUser: {
type: Schema.Types.ObjectId,
ref: 'User'
},
lastReplyAt: {
type: Date,
default: Date.now
},
updatedAt: {
type: Date
},
updatedBy: {
type: Schema.Types.ObjectId,
ref: 'User'
},
createdAt: {
type: Date,
default: Date.now
}
}, {usePushEach: true});
mongoose.model('Topic', TopicSchema);
mongoose.model('Attach', AttachSchema);
mongoose.model('Thumb', ThumbSchema);
mongoose.model('Reply', ReplySchema);