mirror of
https://github.com/outline/outline.git
synced 2026-06-13 03:14:59 +03:00
Add missing database indexes for hooks.unfurl endpoint (#10870)
* Initial plan * Add database indexes to improve hooks.unfurl performance Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com> * Verify migrations and query plans for new indexes Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com> * Address code review feedback: improve migration rollback order and add comments Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com> * Change index column order to teamId first as requested Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com> * Update .env.test --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tommoor <380914+tommoor@users.noreply.github.com> Co-authored-by: Tom Moor <tom@getoutline.com>
This commit is contained in:
@@ -12,6 +12,7 @@ GOOGLE_CLIENT_SECRET=123
|
||||
|
||||
SLACK_CLIENT_ID=123
|
||||
SLACK_CLIENT_SECRET=123
|
||||
SLACK_VERIFICATION_TOKEN=test-token-123
|
||||
|
||||
GITHUB_CLIENT_ID=123;
|
||||
GITHUB_CLIENT_SECRET=123;
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
async up(queryInterface, Sequelize) {
|
||||
await queryInterface.addIndex("authentications", ["teamId", "service"], {
|
||||
name: "authentications_team_id_service",
|
||||
});
|
||||
},
|
||||
|
||||
async down(queryInterface, Sequelize) {
|
||||
await queryInterface.removeIndex(
|
||||
"authentications",
|
||||
"authentications_team_id_service"
|
||||
);
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
async up(queryInterface, Sequelize) {
|
||||
// Add composite index on service and type for better filtering
|
||||
await queryInterface.addIndex("integrations", ["service", "type"], {
|
||||
name: "integrations_service_type",
|
||||
});
|
||||
|
||||
// Add GIN index on settings for JSONB queries
|
||||
// Using raw SQL as Sequelize doesn't support GIN index type natively
|
||||
await queryInterface.sequelize.query(
|
||||
'CREATE INDEX "integrations_settings_gin" ON "integrations" USING GIN ("settings");'
|
||||
);
|
||||
},
|
||||
|
||||
async down(queryInterface, Sequelize) {
|
||||
// Drop indexes in reverse order of creation
|
||||
await queryInterface.sequelize.query(
|
||||
'DROP INDEX IF EXISTS "integrations_settings_gin";'
|
||||
);
|
||||
await queryInterface.removeIndex(
|
||||
"integrations",
|
||||
"integrations_service_type"
|
||||
);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user