var mongoose = require('mongoose') var _ = require('lodash') var db, PushToken function init (config) { db = mongoose.connect(config.mongodbUrl) mongoose.connection.on('error', errorHandler) var pushTokenSchema = new db.Schema({ type: { type: 'String', required: true, enum: ['ios', 'android'], lowercase: true, }, token: { type: 'String', required: true, } }) PushToken = db.model('PushToken', pushTokenSchema) } function errorHandler (error) { console.error('ERROR: ' + error) } function add (deviceType, token) { var pushItem = new PushToken({ type: deviceType, token: token }) pushItem.save() } function getAll (cb) { var wcb = wrap(cb) PushToken.find(wcb) } function removeDevice () { PushToken.remove({token: token}, function (err) { if (err) console.log(err) }) } function removeDevices (tokens) { PushAssociation.remove({token: {$in: tokens}}, function (err) { if (err) console.log(err) }) } function wrap (cb) { return function (err, items) { if (err) return cb(err, null) var items = _.map(items, function (item) { return _.pick(item, ['type', 'token']) }) return callback(null, items) } } module.exports = { init: init, add: add, getAll: getAll, removeDevice: removeDevice, removeDevices: removeDevices, }