Skip to content

Commit 6ce6495

Browse files
authored
Add some indexes to database (#361)
2 parents 28da30d + 92ad857 commit 6ce6495

9 files changed

+59
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { MigrationInterface, QueryRunner } from "typeorm";
2+
3+
export class Migration1741722842647 implements MigrationInterface {
4+
name = 'Migration1741722842647'
5+
6+
public async up(queryRunner: QueryRunner): Promise<void> {
7+
await queryRunner.query(`CREATE INDEX "IDX_02755ce1b56a981eef76c0b59b" ON "epoch" ("marketId") `);
8+
await queryRunner.query(`CREATE INDEX "IDX_f89ec06faf22da268399ae6a9b" ON "epoch" ("epochId") `);
9+
await queryRunner.query(`CREATE INDEX "IDX_187fa56af532560ce204719ea3" ON "resource_price" ("resourceId") `);
10+
await queryRunner.query(`CREATE INDEX "IDX_5bbe200849d138539d19b7caa6" ON "resource_price" ("blockNumber") `);
11+
await queryRunner.query(`CREATE INDEX "IDX_a369700ab879af9ef6061c6dbe" ON "resource_price" ("timestamp") `);
12+
await queryRunner.query(`CREATE INDEX "IDX_82453de75cd894e19c42844e70" ON "resource" ("slug") `);
13+
await queryRunner.query(`CREATE INDEX "IDX_58232d6050e212b4a0f7eb02da" ON "market" ("address") `);
14+
await queryRunner.query(`CREATE INDEX "IDX_33f985ce349688238dfeb8560e" ON "market" ("chainId") `);
15+
await queryRunner.query(`CREATE INDEX "IDX_5430e2d7fe1df2bcada2c12deb" ON "event" ("blockNumber") `);
16+
await queryRunner.query(`CREATE INDEX "IDX_2c15918ff289396205521c5f3c" ON "event" ("timestamp") `);
17+
await queryRunner.query(`CREATE INDEX "IDX_a9346cdd1ea1e53a6b87e409ad" ON "market_price" ("timestamp") `);
18+
await queryRunner.query(`CREATE INDEX "IDX_1ebf6f07652ca11d9f4618b64a" ON "collateral_transfer" ("transactionHash") `);
19+
await queryRunner.query(`CREATE INDEX "IDX_927edd2b828777f0052366195e" ON "position" ("positionId") `);
20+
}
21+
22+
public async down(queryRunner: QueryRunner): Promise<void> {
23+
await queryRunner.query(`DROP INDEX "public"."IDX_927edd2b828777f0052366195e"`);
24+
await queryRunner.query(`DROP INDEX "public"."IDX_1ebf6f07652ca11d9f4618b64a"`);
25+
await queryRunner.query(`DROP INDEX "public"."IDX_a9346cdd1ea1e53a6b87e409ad"`);
26+
await queryRunner.query(`DROP INDEX "public"."IDX_2c15918ff289396205521c5f3c"`);
27+
await queryRunner.query(`DROP INDEX "public"."IDX_5430e2d7fe1df2bcada2c12deb"`);
28+
await queryRunner.query(`DROP INDEX "public"."IDX_33f985ce349688238dfeb8560e"`);
29+
await queryRunner.query(`DROP INDEX "public"."IDX_58232d6050e212b4a0f7eb02da"`);
30+
await queryRunner.query(`DROP INDEX "public"."IDX_82453de75cd894e19c42844e70"`);
31+
await queryRunner.query(`DROP INDEX "public"."IDX_a369700ab879af9ef6061c6dbe"`);
32+
await queryRunner.query(`DROP INDEX "public"."IDX_5bbe200849d138539d19b7caa6"`);
33+
await queryRunner.query(`DROP INDEX "public"."IDX_187fa56af532560ce204719ea3"`);
34+
await queryRunner.query(`DROP INDEX "public"."IDX_f89ec06faf22da268399ae6a9b"`);
35+
await queryRunner.query(`DROP INDEX "public"."IDX_02755ce1b56a981eef76c0b59b"`);
36+
}
37+
38+
}

packages/api/src/models/CollateralTransfer.ts

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
CreateDateColumn,
77
Unique,
88
OneToOne,
9+
Index,
910
} from 'typeorm';
1011
import { Transaction } from './Transaction';
1112

@@ -22,6 +23,7 @@ export class CollateralTransfer {
2223
transaction: Transaction;
2324

2425
@Column({ type: 'varchar' })
26+
@Index()
2527
transactionHash: string;
2628

2729
@Column({ type: 'integer' })

packages/api/src/models/Epoch.ts

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
ManyToOne,
77
OneToMany,
88
Unique,
9+
Index,
910
} from 'typeorm';
1011
import { Market } from './Market';
1112
import { Position } from './Position';
@@ -16,6 +17,7 @@ import { MarketParams } from './MarketParams';
1617
@Unique(['market', 'epochId'])
1718
export class Epoch {
1819
@ManyToOne(() => Market, (market) => market.epochs)
20+
@Index()
1921
market: Market;
2022

2123
@OneToMany(() => Position, (position) => position.epoch)
@@ -28,6 +30,7 @@ export class Epoch {
2830
createdAt: Date;
2931

3032
@Column({ type: 'integer' })
33+
@Index()
3134
epochId: number;
3235

3336
@Column({ type: 'integer', nullable: true })

packages/api/src/models/Event.ts

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
OneToOne,
77
Unique,
88
ManyToOne,
9+
Index,
910
} from 'typeorm';
1011
import { Transaction } from './Transaction';
1112
import { Market } from './Market';
@@ -26,12 +27,14 @@ export class Event {
2627
createdAt: Date;
2728

2829
@Column({ type: 'integer' })
30+
@Index()
2931
blockNumber: number;
3032

3133
@Column({ type: 'varchar' })
3234
transactionHash: string;
3335

3436
@Column({ type: 'bigint' })
37+
@Index()
3538
timestamp: string; // In seconds
3639

3740
@Column({ type: 'integer' })

packages/api/src/models/Market.ts

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
Unique,
77
OneToMany,
88
ManyToOne,
9+
Index,
910
} from 'typeorm';
1011
import { Epoch } from './Epoch';
1112
import { MarketParams } from './MarketParams';
@@ -33,6 +34,7 @@ export class Market {
3334
createdAt: Date;
3435

3536
@Column({ type: 'varchar' })
37+
@Index()
3638
address: string;
3739

3840
@Column({ type: 'varchar', nullable: true })
@@ -42,6 +44,7 @@ export class Market {
4244
isYin: boolean;
4345

4446
@Column({ type: 'integer' })
47+
@Index()
4548
chainId: number;
4649

4750
@Column({ type: 'integer', nullable: true })

packages/api/src/models/MarketPrice.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
Column,
55
CreateDateColumn,
66
OneToOne,
7+
Index,
78
} from 'typeorm';
89
import { Transaction } from './Transaction';
910
import { NUMERIC_PRECISION } from '../constants';
@@ -20,6 +21,7 @@ export class MarketPrice {
2021
createdAt: Date;
2122

2223
@Column({ type: 'bigint' })
24+
@Index()
2325
timestamp: string;
2426

2527
@Column({ type: 'numeric', precision: NUMERIC_PRECISION, scale: 0 })

packages/api/src/models/Position.ts

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
ManyToOne,
88
Unique,
99
JoinColumn,
10+
Index,
1011
} from 'typeorm';
1112
import { Transaction } from './Transaction';
1213
import { NUMERIC_PRECISION } from '../constants';
@@ -29,6 +30,7 @@ export class Position {
2930
epoch: Epoch;
3031

3132
@Column({ type: 'integer' })
33+
@Index()
3234
positionId: number;
3335

3436
@Column({ type: 'varchar', nullable: true })

packages/api/src/models/Resource.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
Column,
55
CreateDateColumn,
66
OneToMany,
7+
Index,
78
} from 'typeorm';
89
import { Market } from './Market';
910
import { ResourcePrice } from './ResourcePrice';
@@ -20,6 +21,7 @@ export class Resource {
2021
name: string;
2122

2223
@Column({ type: 'varchar', unique: true })
24+
@Index()
2325
slug: string;
2426

2527
@OneToMany(() => Market, (market) => market.resource)

packages/api/src/models/ResourcePrice.ts

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
CreateDateColumn,
77
Unique,
88
ManyToOne,
9+
Index,
910
} from 'typeorm';
1011
import { Resource } from './Resource';
1112

@@ -19,12 +20,15 @@ export class ResourcePrice {
1920
createdAt: Date;
2021

2122
@ManyToOne(() => Resource, (resource) => resource.resourcePrices)
23+
@Index()
2224
resource: Resource;
2325

2426
@Column({ type: 'integer' })
27+
@Index()
2528
blockNumber: number;
2629

2730
@Column({ type: 'integer' })
31+
@Index()
2832
timestamp: number;
2933

3034
@Column({ type: 'numeric', precision: NUMERIC_PRECISION, scale: 0 })

0 commit comments

Comments
 (0)