51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
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<boolean> {
|
|
try {
|
|
const tableDescription = await queryInterface.describeTable(tableName);
|
|
return columnName in tableDescription;
|
|
} catch (error) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export async function up(queryInterface: QueryInterface): Promise<void> {
|
|
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<void> {
|
|
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);
|
|
});
|
|
}
|
|
}
|
|
}
|