fix: Migrations should account for old rows
This commit is contained in:
@@ -2,6 +2,18 @@
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
up: async (queryInterface, Sequelize) => {
|
up: async (queryInterface, Sequelize) => {
|
||||||
|
// Previously there was no onDelete cascade so there may be existing stars
|
||||||
|
// in the db that reference documents that no longer exist. We must clean
|
||||||
|
// these up first before applying the new constraint.
|
||||||
|
await queryInterface.sequelize.query(`
|
||||||
|
DELETE FROM stars
|
||||||
|
WHERE NOT EXISTS (
|
||||||
|
SELECT NULL
|
||||||
|
FROM documents doc
|
||||||
|
WHERE doc.id = "documentId"
|
||||||
|
)
|
||||||
|
`);
|
||||||
|
|
||||||
await queryInterface.addColumn("stars", "collectionId", {
|
await queryInterface.addColumn("stars", "collectionId", {
|
||||||
type: Sequelize.UUID,
|
type: Sequelize.UUID,
|
||||||
allowNull: true,
|
allowNull: true,
|
||||||
@@ -15,6 +27,7 @@ module.exports = {
|
|||||||
});
|
});
|
||||||
await queryInterface.changeColumn("stars", "documentId", {
|
await queryInterface.changeColumn("stars", "documentId", {
|
||||||
type: Sequelize.UUID,
|
type: Sequelize.UUID,
|
||||||
|
onDelete: "cascade",
|
||||||
references: {
|
references: {
|
||||||
model: "documents",
|
model: "documents",
|
||||||
},
|
},
|
||||||
@@ -22,13 +35,20 @@ module.exports = {
|
|||||||
await queryInterface.changeColumn("stars", "userId", {
|
await queryInterface.changeColumn("stars", "userId", {
|
||||||
type: Sequelize.UUID,
|
type: Sequelize.UUID,
|
||||||
allowNull: false,
|
allowNull: false,
|
||||||
|
onDelete: "cascade",
|
||||||
references: {
|
references: {
|
||||||
model: "users",
|
model: "users",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
down: async (queryInterface) => {
|
down: async (queryInterface, Sequelize) => {
|
||||||
await queryInterface.removeColumn("stars", "collectionId");
|
await queryInterface.removeColumn("stars", "collectionId");
|
||||||
|
await queryInterface.changeColumn("stars", "documentId", {
|
||||||
|
type: Sequelize.UUID,
|
||||||
|
allowNull: false
|
||||||
|
});
|
||||||
|
await queryInterface.removeConstraint("stars", "stars_documentId_fkey")
|
||||||
|
await queryInterface.removeConstraint("stars", "stars_userId_fkey")
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -138,13 +138,13 @@
|
|||||||
"Documents": "Documents",
|
"Documents": "Documents",
|
||||||
"Logo": "Logo",
|
"Logo": "Logo",
|
||||||
"Document archived": "Document archived",
|
"Document archived": "Document archived",
|
||||||
"Empty": "Empty",
|
|
||||||
"Move document": "Move document",
|
"Move document": "Move document",
|
||||||
"Collections": "Collections",
|
|
||||||
"You can't reorder documents in an alphabetically sorted collection": "You can't reorder documents in an alphabetically sorted collection",
|
"You can't reorder documents in an alphabetically sorted collection": "You can't reorder documents in an alphabetically sorted collection",
|
||||||
|
"Collections": "Collections",
|
||||||
"Untitled": "Untitled",
|
"Untitled": "Untitled",
|
||||||
"New nested document": "New nested document",
|
"New nested document": "New nested document",
|
||||||
"Document not supported – try Markdown, Plain text, HTML, or Word": "Document not supported – try Markdown, Plain text, HTML, or Word",
|
"Document not supported – try Markdown, Plain text, HTML, or Word": "Document not supported – try Markdown, Plain text, HTML, or Word",
|
||||||
|
"Empty": "Empty",
|
||||||
"Starred documents could not be loaded": "Starred documents could not be loaded",
|
"Starred documents could not be loaded": "Starred documents could not be loaded",
|
||||||
"Starred": "Starred",
|
"Starred": "Starred",
|
||||||
"Show more": "Show more",
|
"Show more": "Show more",
|
||||||
|
|||||||
Reference in New Issue
Block a user