aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/models/pPost.js
blob: ad178903efe86471dfd7a0ebaaa2bbc48ae37a7e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

/**
 * Module dependencies
 */

var mongoose = require('mongoose')
  , Schema = mongoose.Schema;

var pPostSchema = new Schema({
    user: { type: Schema.ObjectId, ref: 'User' },
    for: { type: Schema.ObjectId, ref: 'User' },
    project: { type: Schema.ObjectId, ref: 'Project' },
    what: { type: String, default: '', trim: true },
    comment: { type: String, default: '', trim: true },
    participants: [],
    value: { type: Number, defailt: 0 },
    file: { type: String, default: '', trim: true },
    currency: { type: String, default: 'kr', trim: true },
    created: { type: Date, default: Date.now },
    updated: { type: Date, default: Date.now },
    when: { type: Date, default: Date.now }
});




pPostSchema.statics = {

   /**
    * Find post by id
    *
    * @param {ObjectId} id
    * @param {Function} callback
    * @api private
    */

    load: function(id, callback) {
        this.findOne({ _id: id })
          .populate({ path: 'user', select: '_id, name'})
          .exec(callback);
    },


          /**
    * Find all posts that belong to a project, by project id
    *
    * @param {ObjectId} project
    * @param {Function} callback
    * @api private
    */

    loadProject: function(project, callback) {
        this.find({ project: project })
          .populate('user')
          .sort({ 'when': -1, 'created': -1 })
          .exec(callback);
    },


   /**
    * Find last ten posts belonging projects a user is part of, by project ids
    *
    * @param {Array[ObjectId]} projects
    * @param {Function} callback
    * @api private
    */

    loadByProjects: function(projects, callback) {
        this.find({ project: { $in: projects } })
          .populate({ path: 'user', select: 'name email status' })
          .populate({ path: 'project', select: 'name shortURL' })
          .limit(10)
          .sort({ 'when': -1, 'created': -1 })
          .exec(callback);
    }

}

mongoose.model('pPost', pPostSchema);