Files
outline/server/migrations/20220719121200-create-subscriptions.js
CuriousCorrelation 24c71c38a5 feat: Document subscriptions (#3834)
Co-authored-by: Tom Moor <tom.moor@gmail.com>
2022-08-25 23:47:13 -07:00

71 lines
1.6 KiB
JavaScript

"use strict";
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.sequelize.transaction(async (transaction) => {
await queryInterface.createTable(
"subscriptions",
{
id: {
type: Sequelize.UUID,
allowNull: false,
primaryKey: true,
},
userId: {
type: Sequelize.UUID,
allowNull: false,
onDelete: "cascade",
references: {
model: "users",
},
},
documentId: {
type: Sequelize.UUID,
allowNull: true,
onDelete: "cascade",
references: {
model: "documents",
},
},
event: {
type: Sequelize.STRING,
allowNull: false,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
},
deletedAt: {
type: Sequelize.DATE,
allowNull: true,
},
},
{ transaction }
);
await queryInterface.addIndex(
"subscriptions",
["userId", "documentId", "event"],
{
name: "subscriptions_user_id_document_id_event",
type: "UNIQUE",
transaction,
}
);
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.removeIndex("subscriptions", [
"userId",
"documentId",
"event",
]);
return queryInterface.dropTable("subscriptions");
},
};