43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
|
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
|