gancio/server/migrations/20190927160148-new_notification.js
2019-10-23 14:27:29 +02:00

56 lines
1.6 KiB
JavaScript

'use strict';
const { notification: Notification } = require('../api/models')
module.exports = {
up: async (queryInterface, Sequelize) => {
// remove all notifications
await Notification.destroy({where: []})
// add `action` field to notification
try {
await queryInterface.addColumn('notifications', 'action', {
type: Sequelize.ENUM,
values: ['Create', 'Update', 'Delete']
})
} catch {}
// modify values of `type` field
try {
await queryInterface.removeColumn('notifications', 'type').catch()
} catch {}
try {
await queryInterface.addColumn('notifications', 'type', {
type: Sequelize.ENUM,
values: ['mail', 'admin_email', 'ap']
})
} catch {}
await queryInterface.addIndex('notifications', {
unique: true,
fields: ['action', 'type' ]
})
// add AP notifications
await Notification.create({ action: 'Create', type: 'ap', filters: { is_visible: true } })
await Notification.create({ action: 'Update', type: 'ap', filters: { is_visible: true } })
await Notification.create({ action: 'Delete', type: 'ap', filters: { is_visible: true } })
// send anon events via email to admin
await Notification.create({ action: 'Create', type: 'admin_email', filters: { is_visible: false } })
return true
},
down: (queryInterface, Sequelize) => {
return Promise.resolve()
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.dropTable('users');
*/
}
};