mirror of
https://github.com/outline/outline.git
synced 2026-06-13 11:25:03 +03:00
f09450e7ea
* fix: Update unique db constraint to account for revoked share links closes #10017 * Remove pointless try/catch * Switch order of migrations to ensure no 'dead zone' without constraint
31 lines
982 B
JavaScript
31 lines
982 B
JavaScript
"use strict";
|
|
|
|
module.exports = {
|
|
async up(queryInterface, Sequelize) {
|
|
// Create a partial unique index that only applies when revokedAt is NULL
|
|
// This ensures that only non-revoked shares have the unique constraint
|
|
await queryInterface.sequelize.query(
|
|
`CREATE UNIQUE INDEX CONCURRENTLY "shares_urlId_teamId_not_revoked_uk"
|
|
ON "shares" ("urlId", "teamId")
|
|
WHERE "revokedAt" IS NULL;`
|
|
);
|
|
|
|
// Remove the existing unique constraint
|
|
await queryInterface.removeConstraint("shares", "shares_urlId_teamId_uk");
|
|
},
|
|
|
|
async down(queryInterface, Sequelize) {
|
|
// Restore the original unique constraint
|
|
await queryInterface.addConstraint("shares", {
|
|
fields: ["urlId", "teamId"],
|
|
type: "unique",
|
|
name: "shares_urlId_teamId_uk",
|
|
});
|
|
|
|
// Remove the partial unique index
|
|
await queryInterface.sequelize.query(
|
|
`DROP INDEX CONCURRENTLY IF EXISTS "shares_urlId_teamId_not_revoked_uk";`
|
|
);
|
|
},
|
|
};
|