module.exports = { /** * @param {QueryInterface} queryInterface * @param {Sequelize} Sequelize * @returns {Promise} */ async up(queryInterface, Sequelize) { /** * @type {Transaction} */ const transaction = await queryInterface.sequelize.transaction(); try { await queryInterface.createTable( 'users', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'bank_statements', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'bank_transactions', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'clients', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'communication_logs', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'companies', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'invoices', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'reconciliations', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'reminders', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'siigo_records', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'subscriptions', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'roles', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'permissions', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.createTable( 'organizations', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await queryInterface.addColumn( 'users', 'firstName', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'lastName', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'phoneNumber', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'email', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'disabled', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction }, ); await queryInterface.addColumn( 'users', 'password', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'emailVerified', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction }, ); await queryInterface.addColumn( 'users', 'emailVerificationToken', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'emailVerificationTokenExpiresAt', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'users', 'passwordResetToken', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'passwordResetTokenExpiresAt', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'users', 'provider', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'bank_statements', 'upload_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'bank_statements', 'companyId', { type: Sequelize.DataTypes.UUID, references: { model: 'companies', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'bank_transactions', 'transaction_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'bank_transactions', 'description', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'bank_transactions', 'amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction }, ); await queryInterface.addColumn( 'bank_transactions', 'transaction_type', { type: Sequelize.DataTypes.ENUM, values: ['credit', 'debit'], }, { transaction }, ); await queryInterface.addColumn( 'bank_transactions', 'bank_statementId', { type: Sequelize.DataTypes.UUID, references: { model: 'bank_statements', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'nit', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'business_name', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'commercial_name', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'address', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'phone', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'email', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'ciiu_code', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'companyId', { type: Sequelize.DataTypes.UUID, references: { model: 'companies', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'communication_logs', 'message', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'communication_logs', 'sent_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'communication_logs', 'clientId', { type: Sequelize.DataTypes.UUID, references: { model: 'clients', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'companies', 'name', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'companies', 'organizationId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'invoices', 'invoice_number', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'invoices', 'due_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'invoices', 'amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction }, ); await queryInterface.addColumn( 'invoices', 'risk_level', { type: Sequelize.DataTypes.ENUM, values: ['low', 'medium', 'high'], }, { transaction }, ); await queryInterface.addColumn( 'invoices', 'clientId', { type: Sequelize.DataTypes.UUID, references: { model: 'clients', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'reconciliations', 'bank_transactionId', { type: Sequelize.DataTypes.UUID, references: { model: 'bank_transactions', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'reconciliations', 'siigo_recordId', { type: Sequelize.DataTypes.UUID, references: { model: 'siigo_records', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'reconciliations', 'status', { type: Sequelize.DataTypes.ENUM, values: ['matched', 'unmatched'], }, { transaction }, ); await queryInterface.addColumn( 'reconciliations', 'companyId', { type: Sequelize.DataTypes.UUID, references: { model: 'companies', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'reminders', 'template', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'reminders', 'invoiceId', { type: Sequelize.DataTypes.UUID, references: { model: 'invoices', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'reminders', 'send_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'siigo_records', 'record_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'siigo_records', 'description', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'siigo_records', 'amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction }, ); await queryInterface.addColumn( 'siigo_records', 'companyId', { type: Sequelize.DataTypes.UUID, references: { model: 'companies', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'subscriptions', 'plan', { type: Sequelize.DataTypes.ENUM, values: ['Basic', 'Pro'], }, { transaction }, ); await queryInterface.addColumn( 'subscriptions', 'billing_cycle', { type: Sequelize.DataTypes.ENUM, values: ['monthly', 'annual'], }, { transaction }, ); await queryInterface.addColumn( 'subscriptions', 'organizationId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'subscriptions', 'start_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'subscriptions', 'end_date', { type: Sequelize.DataTypes.DATE, }, { transaction }, ); await queryInterface.addColumn( 'permissions', 'name', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'roles', 'name', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'roles', 'role_customization', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'users', 'app_roleId', { type: Sequelize.DataTypes.UUID, references: { model: 'roles', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'organizations', 'name', { type: Sequelize.DataTypes.TEXT, }, { transaction }, ); await queryInterface.addColumn( 'roles', 'globalAccess', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction }, ); await queryInterface.addColumn( 'users', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'bank_statements', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'bank_transactions', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'clients', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'communication_logs', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'companies', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'invoices', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'reconciliations', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'reminders', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'siigo_records', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await queryInterface.addColumn( 'subscriptions', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction }, ); await transaction.commit(); } catch (err) { await transaction.rollback(); throw err; } }, /** * @param {QueryInterface} queryInterface * @param {Sequelize} Sequelize * @returns {Promise} */ async down(queryInterface, Sequelize) { /** * @type {Transaction} */ const transaction = await queryInterface.sequelize.transaction(); try { await queryInterface.removeColumn('subscriptions', 'organizationsId', { transaction, }); await queryInterface.removeColumn('siigo_records', 'organizationsId', { transaction, }); await queryInterface.removeColumn('reminders', 'organizationsId', { transaction, }); await queryInterface.removeColumn('reconciliations', 'organizationsId', { transaction, }); await queryInterface.removeColumn('invoices', 'organizationsId', { transaction, }); await queryInterface.removeColumn('companies', 'organizationsId', { transaction, }); await queryInterface.removeColumn( 'communication_logs', 'organizationsId', { transaction }, ); await queryInterface.removeColumn('clients', 'organizationsId', { transaction, }); await queryInterface.removeColumn( 'bank_transactions', 'organizationsId', { transaction }, ); await queryInterface.removeColumn('bank_statements', 'organizationsId', { transaction, }); await queryInterface.removeColumn('users', 'organizationsId', { transaction, }); await queryInterface.removeColumn('roles', 'globalAccess', { transaction, }); await queryInterface.removeColumn('organizations', 'name', { transaction, }); await queryInterface.removeColumn('users', 'app_roleId', { transaction }); await queryInterface.removeColumn('roles', 'role_customization', { transaction, }); await queryInterface.removeColumn('roles', 'name', { transaction }); await queryInterface.removeColumn('permissions', 'name', { transaction }); await queryInterface.removeColumn('subscriptions', 'end_date', { transaction, }); await queryInterface.removeColumn('subscriptions', 'start_date', { transaction, }); await queryInterface.removeColumn('subscriptions', 'organizationId', { transaction, }); await queryInterface.removeColumn('subscriptions', 'billing_cycle', { transaction, }); await queryInterface.removeColumn('subscriptions', 'plan', { transaction, }); await queryInterface.removeColumn('siigo_records', 'companyId', { transaction, }); await queryInterface.removeColumn('siigo_records', 'amount', { transaction, }); await queryInterface.removeColumn('siigo_records', 'description', { transaction, }); await queryInterface.removeColumn('siigo_records', 'record_date', { transaction, }); await queryInterface.removeColumn('reminders', 'send_date', { transaction, }); await queryInterface.removeColumn('reminders', 'invoiceId', { transaction, }); await queryInterface.removeColumn('reminders', 'template', { transaction, }); await queryInterface.removeColumn('reconciliations', 'companyId', { transaction, }); await queryInterface.removeColumn('reconciliations', 'status', { transaction, }); await queryInterface.removeColumn('reconciliations', 'siigo_recordId', { transaction, }); await queryInterface.removeColumn( 'reconciliations', 'bank_transactionId', { transaction }, ); await queryInterface.removeColumn('invoices', 'clientId', { transaction, }); await queryInterface.removeColumn('invoices', 'risk_level', { transaction, }); await queryInterface.removeColumn('invoices', 'amount', { transaction }); await queryInterface.removeColumn('invoices', 'due_date', { transaction, }); await queryInterface.removeColumn('invoices', 'invoice_number', { transaction, }); await queryInterface.removeColumn('companies', 'organizationId', { transaction, }); await queryInterface.removeColumn('companies', 'name', { transaction }); await queryInterface.removeColumn('communication_logs', 'clientId', { transaction, }); await queryInterface.removeColumn('communication_logs', 'sent_date', { transaction, }); await queryInterface.removeColumn('communication_logs', 'message', { transaction, }); await queryInterface.removeColumn('clients', 'companyId', { transaction, }); await queryInterface.removeColumn('clients', 'ciiu_code', { transaction, }); await queryInterface.removeColumn('clients', 'email', { transaction }); await queryInterface.removeColumn('clients', 'phone', { transaction }); await queryInterface.removeColumn('clients', 'address', { transaction }); await queryInterface.removeColumn('clients', 'commercial_name', { transaction, }); await queryInterface.removeColumn('clients', 'business_name', { transaction, }); await queryInterface.removeColumn('clients', 'nit', { transaction }); await queryInterface.removeColumn( 'bank_transactions', 'bank_statementId', { transaction }, ); await queryInterface.removeColumn( 'bank_transactions', 'transaction_type', { transaction }, ); await queryInterface.removeColumn('bank_transactions', 'amount', { transaction, }); await queryInterface.removeColumn('bank_transactions', 'description', { transaction, }); await queryInterface.removeColumn( 'bank_transactions', 'transaction_date', { transaction }, ); await queryInterface.removeColumn('bank_statements', 'companyId', { transaction, }); await queryInterface.removeColumn('bank_statements', 'upload_date', { transaction, }); await queryInterface.removeColumn('users', 'provider', { transaction }); await queryInterface.removeColumn( 'users', 'passwordResetTokenExpiresAt', { transaction }, ); await queryInterface.removeColumn('users', 'passwordResetToken', { transaction, }); await queryInterface.removeColumn( 'users', 'emailVerificationTokenExpiresAt', { transaction }, ); await queryInterface.removeColumn('users', 'emailVerificationToken', { transaction, }); await queryInterface.removeColumn('users', 'emailVerified', { transaction, }); await queryInterface.removeColumn('users', 'password', { transaction }); await queryInterface.removeColumn('users', 'disabled', { transaction }); await queryInterface.removeColumn('users', 'email', { transaction }); await queryInterface.removeColumn('users', 'phoneNumber', { transaction, }); await queryInterface.removeColumn('users', 'lastName', { transaction }); await queryInterface.removeColumn('users', 'firstName', { transaction }); await queryInterface.dropTable('organizations', { transaction }); await queryInterface.dropTable('permissions', { transaction }); await queryInterface.dropTable('roles', { transaction }); await queryInterface.dropTable('subscriptions', { transaction }); await queryInterface.dropTable('siigo_records', { transaction }); await queryInterface.dropTable('reminders', { transaction }); await queryInterface.dropTable('reconciliations', { transaction }); await queryInterface.dropTable('invoices', { transaction }); await queryInterface.dropTable('companies', { transaction }); await queryInterface.dropTable('communication_logs', { transaction }); await queryInterface.dropTable('clients', { transaction }); await queryInterface.dropTable('bank_transactions', { transaction }); await queryInterface.dropTable('bank_statements', { transaction }); await queryInterface.dropTable('users', { transaction }); await transaction.commit(); } catch (err) { await transaction.rollback(); throw err; } }, };