38544-vm/backend/src/db/migrations/1771365897708.js
2026-02-17 22:06:44 +00:00

7195 lines
228 KiB
JavaScript

module.exports = {
/**
* @param {QueryInterface} queryInterface
* @param {Sequelize} Sequelize
* @returns {Promise<void>}
*/
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<void>}
*/
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;
}
}
};