From b9140c11944e3aedb7922c0da4fe75dd13060a87 Mon Sep 17 00:00:00 2001 From: Nikhil Saboo <36529278+saboonikhil@users.noreply.github.com> Date: Fri, 5 Aug 2022 00:26:07 +0530 Subject: [PATCH] Moving from Market's mdm to disputeMechanism (#144) * Add new replicated field for disputeMechanism * Create new db migration * Generate code based on changes * Copy mappings of mdm for disputeMechanism --- .../{1659276620745-init.js => 1659547715818-init.js} | 6 +++--- schema.graphql | 4 +++- src/model/generated/market.model.ts | 6 ++++++ src/processor/markets.ts | 11 +++++++++++ 4 files changed, 23 insertions(+), 4 deletions(-) rename db/migrations/{1659276620745-init.js => 1659547715818-init.js} (95%) diff --git a/db/migrations/1659276620745-init.js b/db/migrations/1659547715818-init.js similarity index 95% rename from db/migrations/1659276620745-init.js rename to db/migrations/1659547715818-init.js index ddf06ed5..e68ea2d8 100644 --- a/db/migrations/1659276620745-init.js +++ b/db/migrations/1659547715818-init.js @@ -1,5 +1,5 @@ -module.exports = class init1659276620745 { - name = 'init1659276620745' +module.exports = class init1659547715818 { + name = 'init1659547715818' async up(db) { await db.query(`CREATE TABLE "account" ("id" character varying NOT NULL, "account_id" text NOT NULL, "market_id" integer, "pool_id" integer, "pvalue" numeric NOT NULL, CONSTRAINT "PK_54115ee388cdb6d86bb4bf5b2ea" PRIMARY KEY ("id"))`) @@ -8,7 +8,7 @@ module.exports = class init1659276620745 { await db.query(`CREATE TABLE "historical_account_balance" ("id" character varying NOT NULL, "account_id" text NOT NULL, "asset_id" text NOT NULL, "d_balance" numeric NOT NULL, "balance" numeric NOT NULL, "d_value" numeric, "value" numeric, "pvalue" numeric, "event" text NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_bfc701998dd9e45981c88f4d1af" PRIMARY KEY ("id"))`) await db.query(`CREATE TABLE "asset" ("id" character varying NOT NULL, "asset_id" text NOT NULL, "pool_id" integer, "price" numeric, "amount_in_pool" numeric, CONSTRAINT "PK_1209d107fe21482beaea51b745e" PRIMARY KEY ("id"))`) await db.query(`CREATE TABLE "historical_asset" ("id" character varying NOT NULL, "account_id" text, "ztg_traded" numeric, "asset_id" text NOT NULL, "d_price" numeric, "d_amount_in_pool" numeric, "new_price" numeric, "new_amount_in_pool" numeric, "event" text NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_24bfbff0fb73bae4960d7301293" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "market" ("id" character varying NOT NULL, "market_id" integer NOT NULL, "creator" text NOT NULL, "creation" text NOT NULL, "creator_fee" integer, "oracle" text NOT NULL, "outcome_assets" text array NOT NULL, "slug" text, "question" text, "description" text, "categories" jsonb, "tags" text array, "img" text, "market_type" jsonb NOT NULL, "period" jsonb NOT NULL, "end" numeric NOT NULL, "scoring_rule" text NOT NULL, "status" text NOT NULL, "pool_id" integer, "report" jsonb, "resolved_outcome" text, "mdm" jsonb NOT NULL, CONSTRAINT "PK_1e9a2963edfd331d92018e3abac" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "market" ("id" character varying NOT NULL, "market_id" integer NOT NULL, "creator" text NOT NULL, "creation" text NOT NULL, "creator_fee" integer, "oracle" text NOT NULL, "outcome_assets" text array NOT NULL, "slug" text, "question" text, "description" text, "categories" jsonb, "tags" text array, "img" text, "market_type" jsonb NOT NULL, "period" jsonb NOT NULL, "end" numeric NOT NULL, "scoring_rule" text NOT NULL, "status" text NOT NULL, "pool_id" integer, "report" jsonb, "resolved_outcome" text, "mdm" jsonb NOT NULL, "dispute_mechanism" jsonb NOT NULL, CONSTRAINT "PK_1e9a2963edfd331d92018e3abac" PRIMARY KEY ("id"))`) await db.query(`CREATE TABLE "historical_market" ("id" character varying NOT NULL, "market_id" integer NOT NULL, "pool_id" integer, "status" text, "report" jsonb, "resolved_outcome" text, "event" text NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_8b5b3dfdac79a88102b94d55498" PRIMARY KEY ("id"))`) await db.query(`CREATE TABLE "pool" ("id" character varying NOT NULL, "pool_id" integer NOT NULL, "account_id" text, "base_asset" text NOT NULL, "market_id" integer NOT NULL, "pool_status" text NOT NULL, "scoring_rule" text NOT NULL, "swap_fee" text NOT NULL, "total_subsidy" text NOT NULL, "total_weight" text NOT NULL, "weights" jsonb NOT NULL, "ztg_qty" numeric NOT NULL, "volume" numeric NOT NULL, "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_db1bfe411e1516c01120b85f8fe" PRIMARY KEY ("id"))`) await db.query(`CREATE TABLE "historical_pool" ("id" character varying NOT NULL, "pool_id" integer NOT NULL, "pool_status" text, "ztg_qty" numeric, "volume" numeric, "event" text NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_6ee31afe7b6dc3500a94effc951" PRIMARY KEY ("id"))`) diff --git a/schema.graphql b/schema.graphql index eb433638..546bd7e3 100644 --- a/schema.graphql +++ b/schema.graphql @@ -153,7 +153,9 @@ type Market @entity { "Resolved outcome for the market" resolvedOutcome: String "Can be `authorized` or `court` or `simpleDisputes`" - mdm: MarketDisputeMechanism! + mdm: MarketDisputeMechanism! @deprecated + "Can be `authorized` or `court` or `simpleDisputes`" + disputeMechanism: MarketDisputeMechanism! } """ diff --git a/src/model/generated/market.model.ts b/src/model/generated/market.model.ts index e181d176..fc047829 100644 --- a/src/model/generated/market.model.ts +++ b/src/model/generated/market.model.ts @@ -146,4 +146,10 @@ export class Market { */ @Column_("jsonb", {transformer: {to: obj => obj.toJSON(), from: obj => new MarketDisputeMechanism(undefined, marshal.nonNull(obj))}, nullable: false}) mdm!: MarketDisputeMechanism + + /** + * Can be `authorized` or `court` or `simpleDisputes` + */ + @Column_("jsonb", {transformer: {to: obj => obj.toJSON(), from: obj => new MarketDisputeMechanism(undefined, marshal.nonNull(obj))}, nullable: false}) + disputeMechanism!: MarketDisputeMechanism } diff --git a/src/processor/markets.ts b/src/processor/markets.ts index dde7e56d..6d795b55 100644 --- a/src/processor/markets.ts +++ b/src/processor/markets.ts @@ -243,6 +243,17 @@ export async function predictionMarketCreated(ctx: EventHandlerContext) { } newMarket.mdm = mdm + const disputeMechanism = new MarketDisputeMechanism() + const d = market.mdm as any + if (d.authorized) { + disputeMechanism.authorized = d.authorized.toString() + } else if (d.court !== undefined) { + disputeMechanism.court = true + } else if (d.simpleDisputes !== undefined) { + disputeMechanism.simpleDisputes = true + } + newMarket.disputeMechanism = disputeMechanism + console.log(`[${event.name}] Saving market: ${JSON.stringify(newMarket, null, 2)}`) await store.save(newMarket)