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('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.createTable('user_profiles', { 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('user_profile_types', { 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('declarations', { 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('dependents', { 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('data_sources', { 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('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('documents', { 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('income_payers_pj', { 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('income_carne_leao_monthly', { 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('exempt_incomes', { 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('exclusive_incomes', { 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('assets', { 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('debts', { 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('deductible_payments', { 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('investment_positions', { 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('trades', { 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('monthly_capital_gains', { 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('risk_analyses', { 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('notifications', { 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('organization_memberships', { 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('accountant_client_accesses', { 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('audit_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('consents', { 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('job_runs', { 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( 'users', 'app_roleId', { type: Sequelize.DataTypes.UUID, references: { model: 'roles', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'users', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { 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( 'roles', 'globalAccess', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'permissions', 'name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'organizations', 'name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'userId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'cpf', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'birth_date', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'marital_status', { type: Sequelize.DataTypes.ENUM, values: ['solteiro','casado','divorciado','viuvo','uniao_estavel'], }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'spouse_cpf', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'spouse_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'mother_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'cep', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'street', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'house_number', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'address_complement', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'neighborhood', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'city', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'state_uf', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'phone', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'occupation_text', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'occupation_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'cbo_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'main_source_cnpj', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'voter_title', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'voter_zone', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'voter_section', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'nit_pis_pasep', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'caepf_number', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'user_profiles', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'user_profile_types', 'userId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'user_profile_types', 'profile_type', { type: Sequelize.DataTypes.ENUM, values: ['assalariado','autonomo_mei','investidor','proprietario'], }, { transaction } ); await queryInterface.addColumn( 'user_profile_types', 'enabled', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'user_profile_types', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'userId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'base_year', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'status', { type: Sequelize.DataTypes.ENUM, values: ['rascunho','em_preenchimento','aguardando_revisao','concluida','gerada','enviada','retificada'], }, { transaction } ); await queryInterface.addColumn( 'declarations', 'tax_model', { type: Sequelize.DataTypes.ENUM, values: ['simplificado','completo'], }, { transaction } ); await queryInterface.addColumn( 'declarations', 'declaration_type', { type: Sequelize.DataTypes.ENUM, values: ['original','retificadora'], }, { transaction } ); await queryInterface.addColumn( 'declarations', 'previous_receipt_number', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'tax_calculated', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'tax_withheld', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'refund_amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'payable_amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'risk_score', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'risk_details_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'dec_file_url', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'submitted_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'last_calculated_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'declarations', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'cpf', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'birth_date', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'relationship_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'student', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'health_plan', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'own_income', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'dependents', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'data_sources', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'data_sources', 'source_type', { type: Sequelize.DataTypes.ENUM, values: ['open_finance','brokerage','govbr_ecac','sefaz_nfe','pdf_upload','manual'], }, { transaction } ); await queryInterface.addColumn( 'data_sources', 'institution_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'data_sources', 'status', { type: Sequelize.DataTypes.ENUM, values: ['conectado','importando','sucesso','parcial','erro','desconectado'], }, { transaction } ); await queryInterface.addColumn( 'data_sources', 'imported_payload_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'data_sources', 'imported_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'data_sources', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'data_sourceId', { type: Sequelize.DataTypes.UUID, references: { model: 'data_sources', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'transaction_date', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'description', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'direction', { type: Sequelize.DataTypes.ENUM, values: ['credit','debit'], }, { transaction } ); await queryInterface.addColumn( 'transactions', 'ai_category', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'ir_field', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'ir_form', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'taxation_type', { type: Sequelize.DataTypes.ENUM, values: ['tributavel','isento','exclusivo_fonte','nao_tributavel'], }, { transaction } ); await queryInterface.addColumn( 'transactions', 'confidence_score', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'reviewed_by_user', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'requires_human_review', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'review_reason', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'transactions', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'documents', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'documents', 'document_type', { type: Sequelize.DataTypes.ENUM, values: ['informe_rendimentos_empregador','informe_rendimentos_banco','informe_rendimentos_corretora','informe_previdencia','informe_saude','recibo_medico','mensalidade_escolar','carne_leao','escritura_imovel','dimob','nf_servicos','informe_criptoativos','outro'], }, { transaction } ); await queryInterface.addColumn( 'documents', 'file_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'documents', 'storage_url', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'documents', 'extraction_status', { type: Sequelize.DataTypes.ENUM, values: ['pendente','processando','extraido','falhou','confirmado'], }, { transaction } ); await queryInterface.addColumn( 'documents', 'extraction_confidence', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'documents', 'extracted_data_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'documents', 'reviewed', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'documents', 'issuer_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'documents', 'issuer_cnpj', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'documents', 'reference_year', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'documents', 'uploaded_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'documents', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'payer_cnpj', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'payer_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'taxable_income', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'official_deductions', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'inss_withheld', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'tax_withheld', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'thirteenth_salary', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'informe_document_url', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'income_payers_pj', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'year', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'month', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'gross_revenue', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'bookkeeping_deductions', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'taxable_base', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'tax_due', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'darf_paid', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'darf_document_url', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'income_carne_leao_monthly', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'exempt_incomes', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'exempt_incomes', 'income_type', { type: Sequelize.DataTypes.ENUM, values: ['dividendos','lci_lca_cri_cra','poupanca','fgts','indenizacao_rescisao','seguro_desemprego','bolsa_estudo','aposentadoria_parcela_isenta_65','ganho_acoes_ate_20k_mes','lucro_unico_imovel_ate_440k','outros'], }, { transaction } ); await queryInterface.addColumn( 'exempt_incomes', 'source_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'exempt_incomes', 'source_document', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'exempt_incomes', 'amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'exempt_incomes', 'competence', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'exempt_incomes', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'exclusive_incomes', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'exclusive_incomes', 'income_type', { type: Sequelize.DataTypes.ENUM, values: ['decimo_terceiro','plr','jcp','aplicacoes_financeiras','previdencia_vgbl','premios_loterias','ganho_capital_bens','outros'], }, { transaction } ); await queryInterface.addColumn( 'exclusive_incomes', 'source_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'exclusive_incomes', 'source_document', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'exclusive_incomes', 'amount', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'exclusive_incomes', 'tax_withheld', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'exclusive_incomes', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'assets', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'assets', 'group_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'assets', 'item_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'assets', 'description_text', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'assets', 'country', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'assets', 'registration_number', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'assets', 'value_previous_year', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'assets', 'value_current_year', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'assets', 'disposed_in_year', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'assets', 'disposal_value', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'assets', 'buyer_document', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'assets', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'debts', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'debts', 'debt_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'debts', 'creditor_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'debts', 'creditor_document', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'debts', 'description_text', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'debts', 'balance_previous_year', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'debts', 'balance_current_year', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'debts', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'dependentId', { type: Sequelize.DataTypes.UUID, references: { model: 'dependents', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'payment_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'beneficiary_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'beneficiary_document', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'amount_paid', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'notes', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'deductible_payments', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'ticker', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'asset_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'asset_type', { type: Sequelize.DataTypes.ENUM, values: ['acao_br','acao_eua','fii','etf_br','etf_exterior','bdr','renda_fixa','cripto'], }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'brokerage_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'quantity', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'avg_cost', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'value_previous_year', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'value_current_year', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'investment_positions', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'trades', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'trades', 'trade_date', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'trades', 'ticker', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'trades', 'operation', { type: Sequelize.DataTypes.ENUM, values: ['buy','sell'], }, { transaction } ); await queryInterface.addColumn( 'trades', 'quantity', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'trades', 'unit_price', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'trades', 'fees', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'trades', 'ir_operation_type', { type: Sequelize.DataTypes.ENUM, values: ['comum','day_trade','fii','bdr','exterior','cripto','renda_fixa'], }, { transaction } ); await queryInterface.addColumn( 'trades', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'year', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'month', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'asset_type', { type: Sequelize.DataTypes.ENUM, values: ['acoes','day_trade','fiis','etfs','bdrs','exterior','cripto','ganho_capital_bens'], }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'gross_gain', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'gross_loss', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'carryforward_loss', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'net_gain', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'tax_rate', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'tax_due', { type: Sequelize.DataTypes.DECIMAL, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'darf_paid', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'darf_code', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'monthly_capital_gains', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'risk_analyses', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'risk_analyses', 'overall_score', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'risk_analyses', 'factors_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'risk_analyses', 'optimization_suggestions_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'risk_analyses', 'analyzed_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'risk_analyses', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'notifications', 'userId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'notifications', 'notification_type', { type: Sequelize.DataTypes.ENUM, values: ['info','warning','action_needed','error','success'], }, { transaction } ); await queryInterface.addColumn( 'notifications', 'title_text', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'notifications', 'message_text', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'notifications', 'read', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'notifications', 'sent_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'notifications', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'organization_memberships', 'organizationId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'organization_memberships', 'userId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'organization_memberships', 'member_role', { type: Sequelize.DataTypes.ENUM, values: ['owner','admin','contador','member'], }, { transaction } ); await queryInterface.addColumn( 'organization_memberships', 'active', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'accountant_client_accesses', 'accountantId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'accountant_client_accesses', 'clientId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'accountant_client_accesses', 'status', { type: Sequelize.DataTypes.ENUM, values: ['aguardando_dados','em_preenchimento','aguardando_revisao_contador','concluida','problemas_identificados'], }, { transaction } ); await queryInterface.addColumn( 'accountant_client_accesses', 'access_granted', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'accountant_client_accesses', 'granted_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'accountant_client_accesses', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'userId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'event_type', { type: Sequelize.DataTypes.ENUM, values: ['auth_login','auth_logout','profile_update','declaration_update','document_upload','ai_extraction','ai_classification','export_dec','export_pdf','export_excel','permission_change','data_download','account_delete'], }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'entity_name', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'entity_key', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'ip_address', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'user_agent', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'details_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'event_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'audit_logs', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'consents', 'userId', { type: Sequelize.DataTypes.UUID, references: { model: 'users', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'consents', 'consent_type', { type: Sequelize.DataTypes.ENUM, values: ['lgpd_processing','terms_of_use','privacy_policy','cookies'], }, { transaction } ); await queryInterface.addColumn( 'consents', 'version', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'consents', 'granted', { type: Sequelize.DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, { transaction } ); await queryInterface.addColumn( 'consents', 'granted_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'consents', 'context_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'consents', 'organizationsId', { type: Sequelize.DataTypes.UUID, references: { model: 'organizations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'declarationId', { type: Sequelize.DataTypes.UUID, references: { model: 'declarations', key: 'id', }, }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'job_type', { type: Sequelize.DataTypes.ENUM, values: ['open_finance_import','brokerage_import','govbr_import','sefaz_import','pdf_extraction','ai_classification_batch','risk_analysis','dec_generation','pdf_generation','excel_generation'], }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'status', { type: Sequelize.DataTypes.ENUM, values: ['queued','running','succeeded','failed','canceled'], }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'attempt', { type: Sequelize.DataTypes.INTEGER, }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'input_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'output_json', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'error_message', { type: Sequelize.DataTypes.TEXT, }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'started_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'job_runs', 'finished_at', { type: Sequelize.DataTypes.DATE, }, { transaction } ); await queryInterface.addColumn( 'job_runs', '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( 'job_runs', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'finished_at', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'started_at', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'error_message', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'output_json', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'input_json', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'attempt', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'status', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'job_type', { transaction } ); await queryInterface.removeColumn( 'job_runs', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'consents', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'consents', 'context_json', { transaction } ); await queryInterface.removeColumn( 'consents', 'granted_at', { transaction } ); await queryInterface.removeColumn( 'consents', 'granted', { transaction } ); await queryInterface.removeColumn( 'consents', 'version', { transaction } ); await queryInterface.removeColumn( 'consents', 'consent_type', { transaction } ); await queryInterface.removeColumn( 'consents', 'userId', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'event_at', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'details_json', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'user_agent', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'ip_address', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'entity_key', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'entity_name', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'event_type', { transaction } ); await queryInterface.removeColumn( 'audit_logs', 'userId', { transaction } ); await queryInterface.removeColumn( 'accountant_client_accesses', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'accountant_client_accesses', 'granted_at', { transaction } ); await queryInterface.removeColumn( 'accountant_client_accesses', 'access_granted', { transaction } ); await queryInterface.removeColumn( 'accountant_client_accesses', 'status', { transaction } ); await queryInterface.removeColumn( 'accountant_client_accesses', 'clientId', { transaction } ); await queryInterface.removeColumn( 'accountant_client_accesses', 'accountantId', { transaction } ); await queryInterface.removeColumn( 'organization_memberships', 'active', { transaction } ); await queryInterface.removeColumn( 'organization_memberships', 'member_role', { transaction } ); await queryInterface.removeColumn( 'organization_memberships', 'userId', { transaction } ); await queryInterface.removeColumn( 'organization_memberships', 'organizationId', { transaction } ); await queryInterface.removeColumn( 'notifications', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'notifications', 'sent_at', { transaction } ); await queryInterface.removeColumn( 'notifications', 'read', { transaction } ); await queryInterface.removeColumn( 'notifications', 'message_text', { transaction } ); await queryInterface.removeColumn( 'notifications', 'title_text', { transaction } ); await queryInterface.removeColumn( 'notifications', 'notification_type', { transaction } ); await queryInterface.removeColumn( 'notifications', 'userId', { transaction } ); await queryInterface.removeColumn( 'risk_analyses', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'risk_analyses', 'analyzed_at', { transaction } ); await queryInterface.removeColumn( 'risk_analyses', 'optimization_suggestions_json', { transaction } ); await queryInterface.removeColumn( 'risk_analyses', 'factors_json', { transaction } ); await queryInterface.removeColumn( 'risk_analyses', 'overall_score', { transaction } ); await queryInterface.removeColumn( 'risk_analyses', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'darf_code', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'darf_paid', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'tax_due', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'tax_rate', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'net_gain', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'carryforward_loss', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'gross_loss', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'gross_gain', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'asset_type', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'month', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'year', { transaction } ); await queryInterface.removeColumn( 'monthly_capital_gains', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'trades', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'trades', 'ir_operation_type', { transaction } ); await queryInterface.removeColumn( 'trades', 'fees', { transaction } ); await queryInterface.removeColumn( 'trades', 'unit_price', { transaction } ); await queryInterface.removeColumn( 'trades', 'quantity', { transaction } ); await queryInterface.removeColumn( 'trades', 'operation', { transaction } ); await queryInterface.removeColumn( 'trades', 'ticker', { transaction } ); await queryInterface.removeColumn( 'trades', 'trade_date', { transaction } ); await queryInterface.removeColumn( 'trades', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'value_current_year', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'value_previous_year', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'avg_cost', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'quantity', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'brokerage_name', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'asset_type', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'asset_name', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'ticker', { transaction } ); await queryInterface.removeColumn( 'investment_positions', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'notes', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'amount_paid', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'beneficiary_document', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'beneficiary_name', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'payment_code', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'dependentId', { transaction } ); await queryInterface.removeColumn( 'deductible_payments', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'debts', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'debts', 'balance_current_year', { transaction } ); await queryInterface.removeColumn( 'debts', 'balance_previous_year', { transaction } ); await queryInterface.removeColumn( 'debts', 'description_text', { transaction } ); await queryInterface.removeColumn( 'debts', 'creditor_document', { transaction } ); await queryInterface.removeColumn( 'debts', 'creditor_name', { transaction } ); await queryInterface.removeColumn( 'debts', 'debt_code', { transaction } ); await queryInterface.removeColumn( 'debts', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'assets', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'assets', 'buyer_document', { transaction } ); await queryInterface.removeColumn( 'assets', 'disposal_value', { transaction } ); await queryInterface.removeColumn( 'assets', 'disposed_in_year', { transaction } ); await queryInterface.removeColumn( 'assets', 'value_current_year', { transaction } ); await queryInterface.removeColumn( 'assets', 'value_previous_year', { transaction } ); await queryInterface.removeColumn( 'assets', 'registration_number', { transaction } ); await queryInterface.removeColumn( 'assets', 'country', { transaction } ); await queryInterface.removeColumn( 'assets', 'description_text', { transaction } ); await queryInterface.removeColumn( 'assets', 'item_code', { transaction } ); await queryInterface.removeColumn( 'assets', 'group_code', { transaction } ); await queryInterface.removeColumn( 'assets', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'exclusive_incomes', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'exclusive_incomes', 'tax_withheld', { transaction } ); await queryInterface.removeColumn( 'exclusive_incomes', 'amount', { transaction } ); await queryInterface.removeColumn( 'exclusive_incomes', 'source_document', { transaction } ); await queryInterface.removeColumn( 'exclusive_incomes', 'source_name', { transaction } ); await queryInterface.removeColumn( 'exclusive_incomes', 'income_type', { transaction } ); await queryInterface.removeColumn( 'exclusive_incomes', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'exempt_incomes', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'exempt_incomes', 'competence', { transaction } ); await queryInterface.removeColumn( 'exempt_incomes', 'amount', { transaction } ); await queryInterface.removeColumn( 'exempt_incomes', 'source_document', { transaction } ); await queryInterface.removeColumn( 'exempt_incomes', 'source_name', { transaction } ); await queryInterface.removeColumn( 'exempt_incomes', 'income_type', { transaction } ); await queryInterface.removeColumn( 'exempt_incomes', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'darf_document_url', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'darf_paid', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'tax_due', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'taxable_base', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'bookkeeping_deductions', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'gross_revenue', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'month', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'year', { transaction } ); await queryInterface.removeColumn( 'income_carne_leao_monthly', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'informe_document_url', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'thirteenth_salary', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'tax_withheld', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'inss_withheld', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'official_deductions', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'taxable_income', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'payer_name', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'payer_cnpj', { transaction } ); await queryInterface.removeColumn( 'income_payers_pj', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'documents', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'documents', 'uploaded_at', { transaction } ); await queryInterface.removeColumn( 'documents', 'reference_year', { transaction } ); await queryInterface.removeColumn( 'documents', 'issuer_cnpj', { transaction } ); await queryInterface.removeColumn( 'documents', 'issuer_name', { transaction } ); await queryInterface.removeColumn( 'documents', 'reviewed', { transaction } ); await queryInterface.removeColumn( 'documents', 'extracted_data_json', { transaction } ); await queryInterface.removeColumn( 'documents', 'extraction_confidence', { transaction } ); await queryInterface.removeColumn( 'documents', 'extraction_status', { transaction } ); await queryInterface.removeColumn( 'documents', 'storage_url', { transaction } ); await queryInterface.removeColumn( 'documents', 'file_name', { transaction } ); await queryInterface.removeColumn( 'documents', 'document_type', { transaction } ); await queryInterface.removeColumn( 'documents', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'transactions', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'transactions', 'review_reason', { transaction } ); await queryInterface.removeColumn( 'transactions', 'requires_human_review', { transaction } ); await queryInterface.removeColumn( 'transactions', 'reviewed_by_user', { transaction } ); await queryInterface.removeColumn( 'transactions', 'confidence_score', { transaction } ); await queryInterface.removeColumn( 'transactions', 'taxation_type', { transaction } ); await queryInterface.removeColumn( 'transactions', 'ir_form', { transaction } ); await queryInterface.removeColumn( 'transactions', 'ir_field', { transaction } ); await queryInterface.removeColumn( 'transactions', 'ai_category', { transaction } ); await queryInterface.removeColumn( 'transactions', 'direction', { transaction } ); await queryInterface.removeColumn( 'transactions', 'amount', { transaction } ); await queryInterface.removeColumn( 'transactions', 'description', { transaction } ); await queryInterface.removeColumn( 'transactions', 'transaction_date', { transaction } ); await queryInterface.removeColumn( 'transactions', 'data_sourceId', { transaction } ); await queryInterface.removeColumn( 'transactions', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'data_sources', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'data_sources', 'imported_at', { transaction } ); await queryInterface.removeColumn( 'data_sources', 'imported_payload_json', { transaction } ); await queryInterface.removeColumn( 'data_sources', 'status', { transaction } ); await queryInterface.removeColumn( 'data_sources', 'institution_name', { transaction } ); await queryInterface.removeColumn( 'data_sources', 'source_type', { transaction } ); await queryInterface.removeColumn( 'data_sources', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'dependents', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'dependents', 'own_income', { transaction } ); await queryInterface.removeColumn( 'dependents', 'health_plan', { transaction } ); await queryInterface.removeColumn( 'dependents', 'student', { transaction } ); await queryInterface.removeColumn( 'dependents', 'relationship_code', { transaction } ); await queryInterface.removeColumn( 'dependents', 'birth_date', { transaction } ); await queryInterface.removeColumn( 'dependents', 'cpf', { transaction } ); await queryInterface.removeColumn( 'dependents', 'name', { transaction } ); await queryInterface.removeColumn( 'dependents', 'declarationId', { transaction } ); await queryInterface.removeColumn( 'declarations', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'declarations', 'last_calculated_at', { transaction } ); await queryInterface.removeColumn( 'declarations', 'submitted_at', { transaction } ); await queryInterface.removeColumn( 'declarations', 'dec_file_url', { transaction } ); await queryInterface.removeColumn( 'declarations', 'risk_details_json', { transaction } ); await queryInterface.removeColumn( 'declarations', 'risk_score', { transaction } ); await queryInterface.removeColumn( 'declarations', 'payable_amount', { transaction } ); await queryInterface.removeColumn( 'declarations', 'refund_amount', { transaction } ); await queryInterface.removeColumn( 'declarations', 'tax_withheld', { transaction } ); await queryInterface.removeColumn( 'declarations', 'tax_calculated', { transaction } ); await queryInterface.removeColumn( 'declarations', 'previous_receipt_number', { transaction } ); await queryInterface.removeColumn( 'declarations', 'declaration_type', { transaction } ); await queryInterface.removeColumn( 'declarations', 'tax_model', { transaction } ); await queryInterface.removeColumn( 'declarations', 'status', { transaction } ); await queryInterface.removeColumn( 'declarations', 'base_year', { transaction } ); await queryInterface.removeColumn( 'declarations', 'userId', { transaction } ); await queryInterface.removeColumn( 'user_profile_types', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'user_profile_types', 'enabled', { transaction } ); await queryInterface.removeColumn( 'user_profile_types', 'profile_type', { transaction } ); await queryInterface.removeColumn( 'user_profile_types', 'userId', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'caepf_number', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'nit_pis_pasep', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'voter_section', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'voter_zone', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'voter_title', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'main_source_cnpj', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'cbo_code', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'occupation_code', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'occupation_text', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'phone', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'state_uf', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'city', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'neighborhood', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'address_complement', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'house_number', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'street', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'cep', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'mother_name', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'spouse_name', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'spouse_cpf', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'marital_status', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'birth_date', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'cpf', { transaction } ); await queryInterface.removeColumn( 'user_profiles', 'userId', { transaction } ); await queryInterface.removeColumn( 'organizations', 'name', { transaction } ); await queryInterface.removeColumn( 'permissions', 'name', { transaction } ); await queryInterface.removeColumn( 'roles', 'globalAccess', { transaction } ); await queryInterface.removeColumn( 'roles', 'role_customization', { transaction } ); await queryInterface.removeColumn( 'roles', 'name', { transaction } ); await queryInterface.removeColumn( 'users', 'organizationsId', { transaction } ); await queryInterface.removeColumn( 'users', 'app_roleId', { 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('job_runs', { transaction }); await queryInterface.dropTable('consents', { transaction }); await queryInterface.dropTable('audit_logs', { transaction }); await queryInterface.dropTable('accountant_client_accesses', { transaction }); await queryInterface.dropTable('organization_memberships', { transaction }); await queryInterface.dropTable('notifications', { transaction }); await queryInterface.dropTable('risk_analyses', { transaction }); await queryInterface.dropTable('monthly_capital_gains', { transaction }); await queryInterface.dropTable('trades', { transaction }); await queryInterface.dropTable('investment_positions', { transaction }); await queryInterface.dropTable('deductible_payments', { transaction }); await queryInterface.dropTable('debts', { transaction }); await queryInterface.dropTable('assets', { transaction }); await queryInterface.dropTable('exclusive_incomes', { transaction }); await queryInterface.dropTable('exempt_incomes', { transaction }); await queryInterface.dropTable('income_carne_leao_monthly', { transaction }); await queryInterface.dropTable('income_payers_pj', { transaction }); await queryInterface.dropTable('documents', { transaction }); await queryInterface.dropTable('transactions', { transaction }); await queryInterface.dropTable('data_sources', { transaction }); await queryInterface.dropTable('dependents', { transaction }); await queryInterface.dropTable('declarations', { transaction }); await queryInterface.dropTable('user_profile_types', { transaction }); await queryInterface.dropTable('user_profiles', { transaction }); await queryInterface.dropTable('organizations', { transaction }); await queryInterface.dropTable('permissions', { transaction }); await queryInterface.dropTable('roles', { transaction }); await queryInterface.dropTable('users', { transaction }); await transaction.commit(); } catch (err) { await transaction.rollback(); throw err; } } };