const { Job } = require('flitter-jobs') class PushNotifyJob extends Job { static get services() { return [...super.services, 'models', 'jobs', 'output'] } async execute(job) { try { const User = this.models.get('auth:User') const { data } = job let { title = '', message, priority = 5, user_id } = data const user = await User.findById(user_id) if ( !user ) throw new Error('Invalid user_id.') const notify = user.notify_config if ( !notify || !notify.active ) throw new Error('User does not have notifications configured.') this.output.info(`Sending notification to ${user.uid}...`) await notify.send({ title, message, priority }) } catch (e) { this.output.error(e) } this.output.success(`Notification sent!`) } } module.exports = exports = PushNotifyJob