import { QueryInterface, DataTypes } from 'sequelize'; /** * Helper function to check if a column exists in a table */ async function columnExists( queryInterface: QueryInterface, tableName: string, columnName: string ): Promise { try { const tableDescription = await queryInterface.describeTable(tableName); return columnName in tableDescription; } catch (error) { return false; } } export async function up(queryInterface: QueryInterface): Promise { const tables = ['dealer_proposal_cost_items', 'dealer_completion_expenses']; const newColumns = { quantity: { type: DataTypes.INTEGER, allowNull: true, defaultValue: 1 }, hsn_code: { type: DataTypes.STRING(20), allowNull: true } }; for (const table of tables) { for (const [colName, colSpec] of Object.entries(newColumns)) { if (!(await columnExists(queryInterface, table, colName))) { await queryInterface.addColumn(table, colName, colSpec); console.log(`Added column ${colName} to ${table}`); } else { console.log(`Column ${colName} already exists in ${table}`); } } } } export async function down(queryInterface: QueryInterface): Promise { const tables = ['dealer_proposal_cost_items', 'dealer_completion_expenses']; const columns = ['quantity', 'hsn_code']; for (const table of tables) { for (const col of columns) { await queryInterface.removeColumn(table, col).catch((err) => { console.warn(`Failed to remove column ${col} from ${table}:`, err.message); }); } } }