Re_Backend/src/migrations/20251210-add-template-id-foreign-key.ts

55 lines
1.8 KiB
TypeScript

import { QueryInterface } from 'sequelize';
/**
* Add foreign key constraint for template_id after workflow_templates table exists
* This should run after both:
* - 20251210-enhance-workflow-templates (creates workflow_templates table)
* - 20251210-add-workflow-type-support (adds template_id column)
*/
export async function up(queryInterface: QueryInterface): Promise<void> {
// Check if workflow_templates table exists
const [tables] = await queryInterface.sequelize.query(`
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name = 'workflow_templates';
`);
if (tables.length > 0) {
// Check if foreign key already exists
const [constraints] = await queryInterface.sequelize.query(`
SELECT constraint_name
FROM information_schema.table_constraints
WHERE table_schema = 'public'
AND table_name = 'workflow_requests'
AND constraint_name = 'workflow_requests_template_id_fkey';
`);
if (constraints.length === 0) {
// Add foreign key constraint
await queryInterface.sequelize.query(`
ALTER TABLE workflow_requests
ADD CONSTRAINT workflow_requests_template_id_fkey
FOREIGN KEY (template_id)
REFERENCES workflow_templates(template_id)
ON UPDATE CASCADE
ON DELETE SET NULL;
`);
}
}
}
export async function down(queryInterface: QueryInterface): Promise<void> {
// Remove foreign key constraint if it exists
try {
await queryInterface.sequelize.query(`
ALTER TABLE workflow_requests
DROP CONSTRAINT IF EXISTS workflow_requests_template_id_fkey;
`);
} catch (error) {
// Ignore if constraint doesn't exist
console.log('Note: Foreign key constraint may not exist');
}
}