This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
outline/server/migrations/20181124000438-add-notifications.js
Tom Moor 8cbcb77486
Base model refactor (#810)
* Big upgrades

* WIP: Stash

* Stash, 30 flow errors left

* Downgrade mobx

* WIP

* When I understand the difference between class and instance methods

* 💚

* Fixes: File import
Model saving edge cases
pinning and starring docs
Collection editing
Upgrade mobx devtools

* Notification settings saving works

* Disabled settings

* Document mailer

* Working notifications

* Colletion created notification
Ensure not notified for own actions

* Tidy up

* Document updated event only for document creation
Add indexes
Notification setting on user creation

* Commentary

* Fixed: Notification setting on signup

* Fix document move / duplicate stale data
Add BaseModel.refresh method

* Fixes: Title in sidebar not updated after editing document

* 💚

* Improve / restore error handling
Better handle offline errors

* 👕
2018-12-04 22:24:30 -08:00

75 lines
1.7 KiB
JavaScript

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('notifications', {
id: {
type: Sequelize.UUID,
allowNull: false,
primaryKey: true,
},
actorId: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: 'users',
},
},
userId: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: 'users',
},
},
event: {
type: Sequelize.STRING
},
email: {
type: Sequelize.BOOLEAN
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
}
});
await queryInterface.createTable('notification_settings', {
id: {
type: Sequelize.UUID,
allowNull: false,
primaryKey: true,
},
userId: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: 'users',
},
},
teamId: {
type: Sequelize.UUID,
allowNull: false,
references: {
model: 'teams',
},
},
event: {
type: Sequelize.STRING
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
}
});
await queryInterface.addIndex('notification_settings', ['teamId', 'userId']);
await queryInterface.addIndex('notification_settings', ['event']);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('notifications');
await queryInterface.dropTable('notification_settings');
await queryInterface.removeIndex('notification_settings', ['teamId', 'userId']);
await queryInterface.removeIndex('notification_settings', ['event']);
},
};