Skip to content

Commit c737ebd

Browse files
authored
Merge pull request #18 from Cerebellum-Network/feature/add-entity-created-at
Add `created_at` for DDC entities
2 parents e50c17d + f0e6a1c commit c737ebd

File tree

12 files changed

+107
-35
lines changed

12 files changed

+107
-35
lines changed

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
/node_modules
33
/lib
44
/*Versions.jsonl
5+
.env*
6+
!.env.example

.env renamed to .env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
DB_NAME=squid
2+
DB_USER=postgres
23
DB_PASS=postgres
4+
DB_HOST="127.0.0.1"
35
DB_PORT=5432
46
GQL_PORT=4350
57

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@
99
/.idea
1010

1111
/data
12+
13+
.env*
14+
!.env.example

db/migrations/1724138300437-Data.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module.exports = class Data1724138300437 {
2+
name = 'Data1724138300437'
3+
4+
async up(db) {
5+
await db.query(`ALTER TABLE "ddc_node" ADD "created_at_block_height" integer NOT NULL DEFAULT -1`)
6+
await db.query(`ALTER TABLE "ddc_cluster" ADD "created_at_block_height" integer NOT NULL DEFAULT -1`)
7+
await db.query(`ALTER TABLE "ddc_bucket" ADD "created_at_block_height" integer NOT NULL DEFAULT -1`)
8+
}
9+
10+
async down(db) {
11+
await db.query(`ALTER TABLE "ddc_node" DROP COLUMN "created_at_block_height"`)
12+
await db.query(`ALTER TABLE "ddc_cluster" DROP COLUMN "created_at_block_height"`)
13+
await db.query(`ALTER TABLE "ddc_bucket" DROP COLUMN "created_at_block_height"`)
14+
}
15+
}

schema.graphql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ type Account @entity {
1212
type DdcCluster @entity {
1313
id: ID!
1414

15+
createdAtBlockHeight: Int!
16+
1517
managerId: Account! @index
1618

1719
treasuryShare: BigInt!
@@ -41,6 +43,8 @@ enum DdcClusterStatus {
4143
type DdcNode @entity {
4244
id: ID!
4345

46+
createdAtBlockHeight: Int!
47+
4448
providerId: Account! @index
4549
clusterId: DdcCluster
4650

@@ -65,6 +69,8 @@ enum DdcNodeMode {
6569
type DdcBucket @entity {
6670
id: ID!
6771

72+
createdAtBlockHeight: Int!
73+
6874
ownerId: Account! @index
6975
clusterId: DdcCluster! @index
7076

src/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ processor.run(new TypeormDatabase({ supportHotBlocks: true }), async (ctx) => {
9999
ddcClusterEntities.push(
100100
new DdcCluster({
101101
id: c.id,
102+
createdAtBlockHeight: c.createdAtBlockHeight,
102103
managerId: accounts.get(c.managerId),
103104
treasuryShare: c.treasuryShare,
104105
validatorsShare: c.validatorsShare,
@@ -168,6 +169,7 @@ processor.run(new TypeormDatabase({ supportHotBlocks: true }), async (ctx) => {
168169
ddcNodesMap.get(node.id) ??
169170
new DdcNode({
170171
id: node.id,
172+
createdAtBlockHeight: node.createdAtBlockHeight,
171173
providerId: accounts.get(node.providerId),
172174
})
173175
nodeEntity.host = node.host
@@ -225,6 +227,7 @@ processor.run(new TypeormDatabase({ supportHotBlocks: true }), async (ctx) => {
225227
ddcBucketEntities.push(
226228
new DdcBucket({
227229
id: bucket.bucketId.toString(),
230+
createdAtBlockHeight: bucket.createdAtBlockHeight,
228231
ownerId: accounts.get(bucket.ownerId),
229232
clusterId: cluster,
230233
isPublic: bucket.isPublic,

src/model/generated/ddcBucket.model.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, ManyToOne as ManyToOne_, Index as Index_, BooleanColumn as BooleanColumn_, BigIntColumn as BigIntColumn_} from "@subsquid/typeorm-store"
1+
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, IntColumn as IntColumn_, ManyToOne as ManyToOne_, Index as Index_, BooleanColumn as BooleanColumn_, BigIntColumn as BigIntColumn_} from "@subsquid/typeorm-store"
22
import {Account} from "./account.model"
33
import {DdcCluster} from "./ddcCluster.model"
44

@@ -11,6 +11,9 @@ export class DdcBucket {
1111
@PrimaryColumn_()
1212
id!: string
1313

14+
@IntColumn_({nullable: false})
15+
createdAtBlockHeight!: number
16+
1417
@Index_()
1518
@ManyToOne_(() => Account, {nullable: true})
1619
ownerId!: Account

src/model/generated/ddcCluster.model.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, ManyToOne as ManyToOne_, Index as Index_, BigIntColumn as BigIntColumn_, IntColumn as IntColumn_, OneToMany as OneToMany_} from "@subsquid/typeorm-store"
1+
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, IntColumn as IntColumn_, ManyToOne as ManyToOne_, Index as Index_, BigIntColumn as BigIntColumn_, OneToMany as OneToMany_} from "@subsquid/typeorm-store"
22
import {Account} from "./account.model"
33
import {DdcClusterStatus} from "./_ddcClusterStatus"
44
import {DdcBucket} from "./ddcBucket.model"
@@ -13,6 +13,9 @@ export class DdcCluster {
1313
@PrimaryColumn_()
1414
id!: string
1515

16+
@IntColumn_({nullable: false})
17+
createdAtBlockHeight!: number
18+
1619
@Index_()
1720
@ManyToOne_(() => Account, {nullable: true})
1821
managerId!: Account

src/model/generated/ddcNode.model.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, ManyToOne as ManyToOne_, Index as Index_, StringColumn as StringColumn_, BooleanColumn as BooleanColumn_, IntColumn as IntColumn_, BigIntColumn as BigIntColumn_} from "@subsquid/typeorm-store"
1+
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, IntColumn as IntColumn_, ManyToOne as ManyToOne_, Index as Index_, StringColumn as StringColumn_, BooleanColumn as BooleanColumn_, BigIntColumn as BigIntColumn_} from "@subsquid/typeorm-store"
22
import {Account} from "./account.model"
33
import {DdcCluster} from "./ddcCluster.model"
44
import {DdcNodeMode} from "./_ddcNodeMode"
@@ -12,6 +12,9 @@ export class DdcNode {
1212
@PrimaryColumn_()
1313
id!: string
1414

15+
@IntColumn_({nullable: false})
16+
createdAtBlockHeight!: number
17+
1518
@Index_()
1619
@ManyToOne_(() => Account, {nullable: true})
1720
providerId!: Account

src/processors/ddcBucketsProcessor.ts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { logEmptyStorage, logUnsupportedEventVersion, logUnsupportedStorageVersi
44
import { BaseProcessor } from './processor'
55

66
export interface DdcBucketInfo {
7+
createdAtBlockHeight?: number
78
ownerId: string
89
clusterId: string
910
bucketId: bigint
@@ -22,7 +23,12 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
2223
super(new Map<bigint, DdcBucketInfo>())
2324
}
2425

25-
private async processDdcBucketsEvents(bucketId: bigint, block: BlockHeader) {
26+
private async processDdcBucketsEvents(bucketId: bigint, block: BlockHeader, event: Event) {
27+
let createdAtBlockHeight;
28+
if (event.name === events.ddcCustomers.bucketCreated.name) {
29+
createdAtBlockHeight = block.height
30+
}
31+
2632
// TODO(khssnv)
2733
// We can return to ascending versions check here and in the other processors when
2834
// https://github.com/subsquid/squid-sdk/issues/334 fixed, possibly with
@@ -33,6 +39,7 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
3339
const bucket = await storage.ddcCustomers.buckets.v54100.get(block, bucketId)
3440
if (bucket) {
3541
bucketInfo = {
42+
createdAtBlockHeight: createdAtBlockHeight,
3643
ownerId: bucket.ownerId,
3744
clusterId: bucket.clusterId,
3845
bucketId: bucketId,
@@ -48,6 +55,7 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
4855
const bucket = await storage.ddcCustomers.buckets.v50000.get(block, bucketId)
4956
if (bucket) {
5057
bucketInfo = {
58+
createdAtBlockHeight: createdAtBlockHeight,
5159
ownerId: bucket.ownerId,
5260
clusterId: bucket.clusterId,
5361
bucketId: bucketId,
@@ -63,6 +71,7 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
6371
const bucket = await storage.ddcCustomers.buckets.v48017.get(block, bucketId)
6472
if (bucket) {
6573
bucketInfo = {
74+
createdAtBlockHeight: createdAtBlockHeight,
6675
ownerId: bucket.ownerId,
6776
clusterId: bucket.clusterId,
6877
bucketId: bucketId,
@@ -78,6 +87,7 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
7887
const bucket = await storage.ddcCustomers.buckets.v48013.get(block, bucketId)
7988
if (bucket) {
8089
bucketInfo = {
90+
createdAtBlockHeight: createdAtBlockHeight,
8191
ownerId: bucket.ownerId,
8292
clusterId: bucket.clusterId,
8393
bucketId: bucketId,
@@ -105,13 +115,13 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
105115
case events.ddcCustomers.bucketCreated.name: {
106116
if (events.ddcCustomers.bucketCreated.v48013.is(event)) {
107117
const bucketId = events.ddcCustomers.bucketCreated.v48013.decode(event)
108-
await this.processDdcBucketsEvents(bucketId, block)
118+
await this.processDdcBucketsEvents(bucketId, block, event)
109119
} else if (events.ddcCustomers.bucketCreated.v48800.is(event)) {
110120
const bucketId = events.ddcCustomers.bucketCreated.v48800.decode(event).bucketId
111-
await this.processDdcBucketsEvents(bucketId, block)
121+
await this.processDdcBucketsEvents(bucketId, block, event)
112122
} else if (events.ddcCustomers.bucketCreated.v54100.is(event)) {
113123
const bucketId = events.ddcCustomers.bucketCreated.v54100.decode(event).bucketId
114-
await this.processDdcBucketsEvents(bucketId, block)
124+
await this.processDdcBucketsEvents(bucketId, block, event)
115125
} else {
116126
logUnsupportedEventVersion(event)
117127
}
@@ -120,13 +130,13 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
120130
case events.ddcCustomers.bucketUpdated.name: {
121131
if (events.ddcCustomers.bucketUpdated.v48017.is(event)) {
122132
const bucketId = events.ddcCustomers.bucketUpdated.v48017.decode(event)
123-
await this.processDdcBucketsEvents(bucketId, block)
133+
await this.processDdcBucketsEvents(bucketId, block, event)
124134
} else if (events.ddcCustomers.bucketUpdated.v48800.is(event)) {
125135
const bucketId = events.ddcCustomers.bucketUpdated.v48800.decode(event).bucketId
126-
await this.processDdcBucketsEvents(bucketId, block)
136+
await this.processDdcBucketsEvents(bucketId, block, event)
127137
} else if (events.ddcCustomers.bucketUpdated.v54100.is(event)) {
128138
const bucketId = events.ddcCustomers.bucketUpdated.v54100.decode(event).bucketId
129-
await this.processDdcBucketsEvents(bucketId, block)
139+
await this.processDdcBucketsEvents(bucketId, block, event)
130140
} else {
131141
logUnsupportedEventVersion(event)
132142
}
@@ -135,7 +145,7 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
135145
case events.ddcCustomers.bucketRemoved.name: {
136146
if (events.ddcCustomers.bucketRemoved.v50000.is(event)) {
137147
const bucketId = events.ddcCustomers.bucketRemoved.v50000.decode(event).bucketId
138-
await this.processDdcBucketsEvents(bucketId, block)
148+
await this.processDdcBucketsEvents(bucketId, block, event)
139149
} else {
140150
logUnsupportedEventVersion(event)
141151
}
@@ -144,7 +154,7 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
144154
case events.ddcCustomers.bucketTotalNodesUsageUpdated.name: {
145155
if (events.ddcCustomers.bucketTotalNodesUsageUpdated.v54100.is(event)) {
146156
const bucketId = events.ddcCustomers.bucketTotalNodesUsageUpdated.v54100.decode(event).bucketId
147-
await this.processDdcBucketsEvents(bucketId, block)
157+
await this.processDdcBucketsEvents(bucketId, block, event)
148158
} else {
149159
logUnsupportedEventVersion(event)
150160
}
@@ -153,7 +163,7 @@ export class DdcBucketsProcessor extends BaseProcessor<State> {
153163
case events.ddcCustomers.bucketTotalCustomersUsageUpdated.name: {
154164
if (events.ddcCustomers.bucketTotalCustomersUsageUpdated.v54100.is(event)) {
155165
const bucketId = events.ddcCustomers.bucketTotalCustomersUsageUpdated.v54100.decode(event).bucketId
156-
await this.processDdcBucketsEvents(bucketId, block)
166+
await this.processDdcBucketsEvents(bucketId, block, event)
157167
} else {
158168
logUnsupportedEventVersion(event)
159169
}

0 commit comments

Comments
 (0)