71 lines
3.1 KiB
TypeScript
71 lines
3.1 KiB
TypeScript
import { MigrationInterface, QueryRunner, Table, TableIndex } from 'typeorm';
|
|
|
|
export enum OrderEventEndState {
|
|
Invalid = 'INVALID',
|
|
Added = 'ADDED',
|
|
Filled = 'FILLED',
|
|
FullyFilled = 'FULLY_FILLED',
|
|
Cancelled = 'CANCELLED',
|
|
Expired = 'EXPIRED',
|
|
Unexpired = 'UNEXPIRED',
|
|
StoppedWatching = 'STOPPED_WATCHING',
|
|
Unfunded = 'UNFUNDED',
|
|
FillabilityIncreased = 'FILLABILITY_INCREASED',
|
|
}
|
|
|
|
const OrderEventEndStateStrings = Object.keys(OrderEventEndState)
|
|
.filter((x) => isNaN(parseInt(x, 10)))
|
|
.map((s) => s.toUpperCase());
|
|
|
|
export class CreatePersistentSignedOrder1604516429383 implements MigrationInterface {
|
|
public indices = ['maker_address', 'maker_asset_data', 'taker_asset_data', 'fee_recipient_address'].map(
|
|
(colName) => new TableIndex({ name: `persistent_signed_orders_${colName}`, columnNames: [colName] }),
|
|
);
|
|
|
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query(
|
|
`CREATE TYPE "persistent_signed_orders_state_enum" AS ENUM(\'${OrderEventEndStateStrings.join(
|
|
`\',\'`,
|
|
)}\');`,
|
|
);
|
|
await queryRunner.createTable(
|
|
new Table({
|
|
name: 'persistent_signed_orders',
|
|
columns: [
|
|
{ name: 'hash', type: 'varchar', isPrimary: true },
|
|
{ name: 'sender_address', type: 'varchar' },
|
|
{ name: 'maker_address', type: 'varchar' },
|
|
{ name: 'taker_address', type: 'varchar' },
|
|
{ name: 'maker_asset_data', type: 'varchar' },
|
|
{ name: 'taker_asset_data', type: 'varchar' },
|
|
{ name: 'exchange_address', type: 'varchar' },
|
|
{ name: 'fee_recipient_address', type: 'varchar' },
|
|
{ name: 'expiration_time_seconds', type: 'varchar' },
|
|
{ name: 'maker_fee', type: 'varchar' },
|
|
{ name: 'taker_fee', type: 'varchar' },
|
|
{ name: 'maker_asset_amount', type: 'varchar' },
|
|
{ name: 'taker_asset_amount', type: 'varchar' },
|
|
{ name: 'salt', type: 'varchar' },
|
|
{ name: 'signature', type: 'varchar' },
|
|
{ name: 'remaining_fillable_taker_asset_amount', type: 'varchar' },
|
|
{ name: 'maker_fee_asset_data', type: 'varchar' },
|
|
{ name: 'taker_fee_asset_data', type: 'varchar' },
|
|
{
|
|
name: 'state',
|
|
type: 'enum',
|
|
enum: OrderEventEndStateStrings,
|
|
default: `'${OrderEventEndState.Added}'`,
|
|
},
|
|
],
|
|
}),
|
|
true,
|
|
);
|
|
await queryRunner.createIndices('persistent_signed_orders', this.indices);
|
|
}
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.dropTable('persistent_signed_orders', true, true, true);
|
|
await queryRunner.query(`DROP TYPE "persistent_signed_orders_state_enum"`);
|
|
}
|
|
}
|