update entity and migration

This commit is contained in:
Einhornimmond 2023-12-06 22:42:47 +01:00
parent c3d72cb8df
commit 7a9f52e440
3 changed files with 25 additions and 10 deletions

View File

@ -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',

View File

@ -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,

View File

@ -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\`;`)
}