diff --git a/dlt-database/entity/0003-refactor_transaction_recipe/Account.ts b/dlt-database/entity/0003-refactor_transaction_recipe/Account.ts index 1f94a9d55..c0c8aef98 100644 --- a/dlt-database/entity/0003-refactor_transaction_recipe/Account.ts +++ b/dlt-database/entity/0003-refactor_transaction_recipe/Account.ts @@ -18,7 +18,7 @@ export class Account extends BaseEntity { @PrimaryGeneratedColumn('increment', { unsigned: true }) id: number - @ManyToOne(() => User, (user) => user.accounts, { cascade: ['insert'], eager: true }) // Assuming you have a User entity with 'accounts' relation + @ManyToOne(() => User, (user) => user.accounts, { cascade: ['insert', 'update'], eager: true }) // Assuming you have a User entity with 'accounts' relation @JoinColumn({ name: 'user_id' }) user?: User @@ -47,20 +47,21 @@ export class Account extends BaseEntity { confirmedAt?: Date @Column({ + name: 'balance_confirmed_at', type: 'decimal', precision: 40, scale: 20, default: 0, transformer: DecimalTransformer, }) - balance: Decimal + balanceConfirmedAt: Decimal @Column({ - name: 'balance_date', + name: 'balance_confirmed_at_date', type: 'datetime', default: () => 'CURRENT_TIMESTAMP()', }) - balanceDate: Date + balanceConfirmedAtDate: Date @Column({ name: 'balance_created_at', diff --git a/dlt-database/entity/0003-refactor_transaction_recipe/Transaction.ts b/dlt-database/entity/0003-refactor_transaction_recipe/Transaction.ts index f1167043f..66c5cf189 100644 --- a/dlt-database/entity/0003-refactor_transaction_recipe/Transaction.ts +++ b/dlt-database/entity/0003-refactor_transaction_recipe/Transaction.ts @@ -71,6 +71,7 @@ export class Transaction extends BaseEntity { }) amount?: Decimal + // account balance for sender based on creation date @Column({ name: 'account_balance_created_at', type: 'decimal', @@ -102,8 +103,9 @@ export class Transaction extends BaseEntity { @Column({ name: 'running_hash', type: 'binary', length: 48, nullable: true }) runningHash?: Buffer + // account balance for sender based on confirmation date (iota milestone) @Column({ - name: 'account_balance', + name: 'account_balance_confirmed_at', type: 'decimal', precision: 40, scale: 20, diff --git a/dlt-database/migrations/0003-refactor_transaction_recipe.ts b/dlt-database/migrations/0003-refactor_transaction_recipe.ts index e860e4926..5d6f6af41 100644 --- a/dlt-database/migrations/0003-refactor_transaction_recipe.ts +++ b/dlt-database/migrations/0003-refactor_transaction_recipe.ts @@ -5,15 +5,21 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis // write upgrade logic as parameter of queryFn await queryFn(`DROP TABLE \`confirmed_transactions\`;`) await queryFn(`DROP TABLE \`transaction_recipes\`;`) - + + await queryFn(` + ALTER TABLE \`accounts\` + RENAME COLUMN \`balance\` TO \`balance_confirmed_at\`, + RENAME COLUMN \`balance_date\` TO \`balance_confirmed_at_date\`, + `) + await queryFn( `ALTER TABLE \`accounts\` MODIFY COLUMN \`derivation_index\` int(10) unsigned NULL DEFAULT NULL;`, ) await queryFn( - `ALTER TABLE \`accounts\` ADD COLUMN \`account_balance_created_at\` decimal(40,20) NOT NULL DEFAULT 0 AFTER \`balance_date\`;`, + `ALTER TABLE \`accounts\` ADD COLUMN \`balance_created_at\` decimal(40,20) NOT NULL DEFAULT 0 AFTER \`balance_date\`;`, ) await queryFn( - `ALTER TABLE \`accounts\` ADD COLUMN \`balance_created_at_date\` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) AFTER \`account_balance_created_at\`;`, + `ALTER TABLE \`accounts\` ADD COLUMN \`balance_created_at_date\` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) AFTER \`balance_created_at\`;`, ) await queryFn( @@ -35,7 +41,7 @@ export async function upgrade(queryFn: (query: string, values?: any[]) => Promis \`protocol_version\` varchar(255) NOT NULL DEFAULT '1', \`nr\` bigint NULL DEFAULT NULL, \`running_hash\` varbinary(48) NULL DEFAULT NULL, - \`account_balance\` decimal(40, 20) NULL DEFAULT 0.00000000000000000000, + \`account_balance_confirmed_at\` decimal(40, 20) NULL DEFAULT 0.00000000000000000000, \`iota_milestone\` bigint NULL DEFAULT NULL, \`confirmed_at\` datetime NULL DEFAULT NULL, PRIMARY KEY (\`id\`), @@ -88,10 +94,16 @@ export async function downgrade(queryFn: (query: string, values?: any[]) => Prom FOREIGN KEY (\`account_id\`) REFERENCES accounts(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;`) + await queryFn(` + ALTER TABLE \`accounts\` + RENAME COLUMN \`balance_confirmed_at\` TO \`balance\`, + RENAME COLUMN \`balance_confirmed_at_date\` TO \`balance_date\`, + `) + await queryFn( `ALTER TABLE \`accounts\` MODIFY COLUMN \`derivation_index\` int(10) unsigned NOT NULL;`, ) - await queryFn(`ALTER TABLE \`accounts\` DROP COLUMN \`account_balance_created_at\`;`) + await queryFn(`ALTER TABLE \`accounts\` DROP COLUMN \`balance_created_at\`;`) await queryFn(`ALTER TABLE \`accounts\` DROP COLUMN \`balance_created_at_date\`;`) await queryFn(`DROP TABLE \`transactions\`;`) }