Skip to content
Snippets Groups Projects
Commit ddbcf77b authored by Hugo Trentesaux's avatar Hugo Trentesaux
Browse files

add blocks timestamsp

parent 34030775
No related branches found
No related tags found
No related merge requests found
module.exports = class Data1700650062691 {
name = 'Data1700650062691'
module.exports = class Data1700653099748 {
name = 'Data1700653099748'
async up(db) {
await db.query(`CREATE TABLE "transfer" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "amount" numeric NOT NULL, "from_id" character varying, "to_id" character varying, CONSTRAINT "PK_fd9ddbdd49a17afcbe014401295" PRIMARY KEY ("id"))`)
......@@ -10,9 +10,9 @@ module.exports = class Data1700650062691 {
await db.query(`CREATE INDEX "IDX_f4007436c1b546ede08a4fd7ab" ON "transfer" ("amount") `)
await db.query(`CREATE TABLE "account" ("id" character varying NOT NULL, CONSTRAINT "PK_54115ee388cdb6d86bb4bf5b2ea" PRIMARY KEY ("id"))`)
await db.query(`CREATE TABLE "cert" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "issuer_id" character varying, "receiver_id" character varying, CONSTRAINT "PK_6a0ce80cc860598b4f16c00998c" PRIMARY KEY ("id"))`)
await db.query(`CREATE INDEX "IDX_a0541d4207bde7970641de0641" ON "cert" ("block_number") `)
await db.query(`CREATE INDEX "IDX_70592e488b2e75cd8a2fa79826" ON "cert" ("issuer_id") `)
await db.query(`CREATE INDEX "IDX_262e29ab91c8ebc727cc518f2f" ON "cert" ("receiver_id") `)
await db.query(`CREATE INDEX "IDX_a0541d4207bde7970641de0641" ON "cert" ("block_number") `)
await db.query(`CREATE TABLE "identity" ("id" character varying NOT NULL, "index" integer NOT NULL, "name" text, "account_id" character varying, CONSTRAINT "REL_bafa9e6c71c3f69cef6602a809" UNIQUE ("account_id"), CONSTRAINT "PK_ff16a44186b286d5e626178f726" PRIMARY KEY ("id"))`)
await db.query(`CREATE UNIQUE INDEX "IDX_6f883c7979ea8dff46327f67cc" ON "identity" ("index") `)
await db.query(`CREATE UNIQUE INDEX "IDX_bafa9e6c71c3f69cef6602a809" ON "identity" ("account_id") `)
......@@ -20,6 +20,9 @@ module.exports = class Data1700650062691 {
await db.query(`CREATE TABLE "call" ("id" character varying NOT NULL, "name" text NOT NULL, "block_number" integer NOT NULL, CONSTRAINT "PK_2098af0169792a34f9cfdd39c47" PRIMARY KEY ("id"))`)
await db.query(`CREATE INDEX "IDX_8b212022b7428232091e2f8aa5" ON "call" ("name") `)
await db.query(`CREATE INDEX "IDX_8d62e222f606c249fb4046ad63" ON "call" ("block_number") `)
await db.query(`CREATE TABLE "block" ("id" character varying NOT NULL, "number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_d0925763efb591c2e2ffb267572" PRIMARY KEY ("id"))`)
await db.query(`CREATE UNIQUE INDEX "IDX_38414873c187a3e0c7943bc4c7" ON "block" ("number") `)
await db.query(`CREATE INDEX "IDX_5c67cbcf4960c1a39e5fe25e87" ON "block" ("timestamp") `)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_76bdfed1a7eb27c6d8ecbb73496" FOREIGN KEY ("from_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_0751309c66e97eac9ef11493623" FOREIGN KEY ("to_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "cert" ADD CONSTRAINT "FK_70592e488b2e75cd8a2fa798261" FOREIGN KEY ("issuer_id") REFERENCES "identity"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
......@@ -36,9 +39,9 @@ module.exports = class Data1700650062691 {
await db.query(`DROP INDEX "public"."IDX_f4007436c1b546ede08a4fd7ab"`)
await db.query(`DROP TABLE "account"`)
await db.query(`DROP TABLE "cert"`)
await db.query(`DROP INDEX "public"."IDX_a0541d4207bde7970641de0641"`)
await db.query(`DROP INDEX "public"."IDX_70592e488b2e75cd8a2fa79826"`)
await db.query(`DROP INDEX "public"."IDX_262e29ab91c8ebc727cc518f2f"`)
await db.query(`DROP INDEX "public"."IDX_a0541d4207bde7970641de0641"`)
await db.query(`DROP TABLE "identity"`)
await db.query(`DROP INDEX "public"."IDX_6f883c7979ea8dff46327f67cc"`)
await db.query(`DROP INDEX "public"."IDX_bafa9e6c71c3f69cef6602a809"`)
......@@ -46,6 +49,9 @@ module.exports = class Data1700650062691 {
await db.query(`DROP TABLE "call"`)
await db.query(`DROP INDEX "public"."IDX_8b212022b7428232091e2f8aa5"`)
await db.query(`DROP INDEX "public"."IDX_8d62e222f606c249fb4046ad63"`)
await db.query(`DROP TABLE "block"`)
await db.query(`DROP INDEX "public"."IDX_38414873c187a3e0c7943bc4c7"`)
await db.query(`DROP INDEX "public"."IDX_5c67cbcf4960c1a39e5fe25e87"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_76bdfed1a7eb27c6d8ecbb73496"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_0751309c66e97eac9ef11493623"`)
await db.query(`ALTER TABLE "cert" DROP CONSTRAINT "FK_70592e488b2e75cd8a2fa798261"`)
......
......@@ -35,3 +35,8 @@ type Call @entity {
name: String! @index
blockNumber: Int! @index
}
type Block @entity {
number: Int! @index @unique
timestamp: DateTime! @index
}
\ No newline at end of file
......@@ -4,7 +4,7 @@ import * as ss58 from '@subsquid/ss58'
import assert from 'assert'
import {processor, ProcessorContext} from './processor'
import {Account, Cert, Identity, Transfer, Call} from './model'
import {Account, Cert, Identity, Transfer, Call, Block} from './model'
import {events, calls} from './types'
import { string } from './model/generated/marshal'
......@@ -22,9 +22,11 @@ processor.run(new TypeormDatabase({supportHotBlocks: true}), async (ctx) => {
await ctx.store.insert(transfers)
await ctx.store.insert(certs)
await ctx.store.insert(theCalls)
await ctx.store.insert(events.blocks)
})
interface Events {
blocks: Block[]
transfer: TransferEvent[]
cert: CertEvent[]
call: CallRecord[]
......@@ -54,9 +56,17 @@ function getEvents(ctx: ProcessorContext<Store>): Events {
let transfers: TransferEvent[] = []
let certs: CertEvent[] = []
let all_calls: CallRecord[] = []
let blocks: Block[] = []
// Blocks
for (let block of ctx.blocks) {
// Block
blocks.push(new Block({
id: block.header.hash,
number: block.header.height,
timestamp: block.header.timestamp ? new Date(block.header.timestamp) : new Date(0),
}))
// Events
for (let event of block.events) {
switch (event.name) {
......@@ -127,6 +137,7 @@ function getEvents(ctx: ProcessorContext<Store>): Events {
transfer: transfers,
cert: certs,
call: all_calls,
blocks,
}
return all_events
}
......
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, Index as Index_} from "typeorm"
@Entity_()
export class Block {
constructor(props?: Partial<Block>) {
Object.assign(this, props)
}
@PrimaryColumn_()
id!: string
@Index_({unique: true})
@Column_("int4", {nullable: false})
number!: number
@Index_()
@Column_("timestamp with time zone", {nullable: false})
timestamp!: Date
}
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, ManyToOne as ManyToOne_, Index as Index_} from "typeorm"
import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, Index as Index_, ManyToOne as ManyToOne_} from "typeorm"
import {Identity} from "./identity.model"
@Entity_()
......@@ -10,6 +10,10 @@ export class Cert {
@PrimaryColumn_()
id!: string
@Index_()
@Column_("int4", {nullable: false})
blockNumber!: number
@Index_()
@ManyToOne_(() => Identity, {nullable: true})
issuer!: Identity
......@@ -17,8 +21,4 @@ export class Cert {
@Index_()
@ManyToOne_(() => Identity, {nullable: true})
receiver!: Identity
@Index_()
@Column_("int4", {nullable: false})
blockNumber!: number
}
......@@ -3,3 +3,4 @@ export * from "./transfer.model"
export * from "./identity.model"
export * from "./cert.model"
export * from "./call.model"
export * from "./block.model"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment