aboutsummaryrefslogblamecommitdiffstatshomepage
path: root/models/pPost.js
blob: 1f53984701ab1cf4f0bf0732461f1fcb426565a9 (plain) (tree)
1
2
3
4
5
6
7
8
9







                                  
                              
                                                 


                                                       
                                                       


                                                    
                                                          
                                               

                                               

   
 

 
                       

      
                     







                                  
                                                         
                          

      

             









                                                            
                                              
                          












                                                                              
                                                         
                                                                 
                                              
                          

     

 
                                     

/**
 * 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: '_id name' })
          .populate({ path: 'project', select: 'name shortURL' })
          .sort({ 'when': -1, 'created': -1 })
          .exec(callback);
    }

}

mongoose.model('pPost', pPostSchema);