Files
protocol/apps-node/rfq-api/migrations/1625095491619-CreateBlockedAddressesTable.ts
2023-03-09 11:19:11 -07:00

41 lines
2.0 KiB
TypeScript

import { MigrationInterface, QueryRunner, Table, TableCheck, TableIndex } from 'typeorm';
const blockedAddressesTable = new Table({
name: 'blocked_addresses',
columns: [
{ name: 'address', type: 'varchar', isPrimary: true },
{ name: 'created_at', type: 'timestamptz', default: 'NOW()' },
{ name: 'parent', type: 'varchar', isNullable: true },
{ name: 'last_seen_nonce', type: 'bigint', isNullable: true },
{ name: 'ignore', type: 'boolean', default: false },
],
});
const createdAtIndex = new TableIndex({ name: `blocked_addresses_created_at_index`, columnNames: ['created_at'] });
const ignoreIndex = new TableIndex({ name: `blocked_addresses_ignore_index`, columnNames: ['ignore'] });
export class CreateBlockedAddressesTable1625095491619 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
const driver = queryRunner.connection.driver;
const addressLowerCaseConstraint = new TableCheck({
columnNames: ['address'],
expression: `${driver.escape('address')} = lower(${driver.escape('address')})`,
});
await queryRunner.createTable(blockedAddressesTable);
await queryRunner.createIndex('blocked_addresses', createdAtIndex);
await queryRunner.createIndex('blocked_addresses', ignoreIndex);
await queryRunner.createCheckConstraint('blocked_addresses', addressLowerCaseConstraint);
}
public async down(queryRunner: QueryRunner): Promise<void> {
const driver = queryRunner.connection.driver;
const addressLowerCaseConstraint = new TableCheck({
columnNames: ['address'],
expression: `${driver.escape('address')} = lower(${driver.escape('address')})`,
});
await queryRunner.dropIndex('blocked_addresses', createdAtIndex);
await queryRunner.dropIndex('blocked_addresses', ignoreIndex);
await queryRunner.dropCheckConstraint('blocked_addresses', addressLowerCaseConstraint);
await queryRunner.dropTable(blockedAddressesTable);
}
}