diff --git a/backend/migrations/20240913071145-add-answer-fields-to-contact_message.cjs b/backend/migrations/20240913071145-add-answer-fields-to-contact_message.cjs index b03762c..d7347cb 100644 --- a/backend/migrations/20240913071145-add-answer-fields-to-contact_message.cjs +++ b/backend/migrations/20240913071145-add-answer-fields-to-contact_message.cjs @@ -2,42 +2,44 @@ module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.addColumn({ - tableName: 'contact_message', - schema: 'service' - }, 'answer', { - type: Sequelize.TEXT, - allowNull: true - }); - await queryInterface.addColumn({ - tableName: 'contact_message', - schema: 'service' - }, 'answered_at', { - type: Sequelize.DATE, - allowNull: true - }); - await queryInterface.addColumn({ - tableName: 'contact_message', - schema: 'service' - }, 'is_answered', { - type: Sequelize.BOOLEAN, - allowNull: false, - defaultValue: false - }); + const table = { tableName: 'contact_message', schema: 'service' }; + const columns = await queryInterface.describeTable(table); + + if (!columns.answer) { + await queryInterface.addColumn(table, 'answer', { + type: Sequelize.TEXT, + allowNull: true + }); + } + + if (!columns.answered_at) { + await queryInterface.addColumn(table, 'answered_at', { + type: Sequelize.DATE, + allowNull: true + }); + } + + if (!columns.is_answered) { + await queryInterface.addColumn(table, 'is_answered', { + type: Sequelize.BOOLEAN, + allowNull: false, + defaultValue: false + }); + } }, down: async (queryInterface, Sequelize) => { - await queryInterface.removeColumn({ - tableName: 'contact_message', - schema: 'service' - }, 'answer'); - await queryInterface.removeColumn({ - tableName: 'contact_message', - schema: 'service' - }, 'answered_at'); - await queryInterface.removeColumn({ - tableName: 'contact_message', - schema: 'service' - }, 'is_answered'); + const table = { tableName: 'contact_message', schema: 'service' }; + const columns = await queryInterface.describeTable(table); + + if (columns.answer) { + await queryInterface.removeColumn(table, 'answer'); + } + if (columns.answered_at) { + await queryInterface.removeColumn(table, 'answered_at'); + } + if (columns.is_answered) { + await queryInterface.removeColumn(table, 'is_answered'); + } } };