You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CoreID/app/models/system/NotifyConfig.model.js

43 lines
1.2 KiB

const { Model } = require('flitter-orm')
class NotifyConfigModel extends Model {
static get services() {
return [...super.services, 'notify', 'configs', 'jobs']
}
static get schema() {
return {
user_id: String,
gateway_url: String,
application_key: String,
created_on: { type: Date, default: () => new Date },
active: { type: Boolean, default: true },
}
}
async to_api() {
return {
user_id: this.user_id,
gateway_url: this.gateway_url,
application_key: this.application_key,
created_on: this.created_on,
active: this.active,
}
}
async send({ title = '', message, priority = 5 }) {
if ( !title ) title = this.configs.get('app.name')
this.notify.host = this.gateway_url
await this.notify.send_one(this.application_key, title, message, priority)
this.notify.host = false
}
async log({ title = '', message, priority = 5 }) {
await this.jobs.queue('notifications').add('PushNotify', {
title, message, priority, user_id: this.user_id,
})
}
}
module.exports = exports = NotifyConfigModel