app/models/notificationRequest.js

/**
 * NotificationRequest model
 * @module
 */

var modelFactory = require('app/factories/model');
var queryConditions = require('./queryConditions');

/**
 * Represents request for notification by user upon occurence of event
 * @class NotificationRequest
 * @property {string} event - Event of which to notify user
 * @property {module:models/source~Source} [source] - Source related to event
 * @property {module:models/storage~Storage} [storage] - Storage related to event
 * @property {module:models/user~User} user - User to notify related to event
 */
module.exports = modelFactory.new('NotificationRequest', {
  event: { type: String, required: true },
  source: { ref: 'Source' },
  storage: { ref: 'Storage' },
  user: { ref: 'User', required: true }
}, {
  jsonapi: {
    get: {
      allowed: 'user',
      queryConditions: queryConditions.userMatchesRequester
    },
    post: {
      allowed: 'user',
      queryConditions: queryConditions.userMatchesRequester
    },
    delete: {
      allowed: 'user',
      queryConditions: queryConditions.userMatchesRequester
    }
  }
});