Skip to content

Commit

Permalink
moved OrderCreated to handlers
Browse files Browse the repository at this point in the history
  • Loading branch information
gmxer committed Nov 15, 2023
1 parent d9b4187 commit 5f2f79c
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 38 deletions.
41 changes: 21 additions & 20 deletions synthetics-stats/src/entities/orders.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Order, Transaction } from "../../generated/schema";
import { EventData } from "../utils/eventData";
import { BigInt } from "@graphprotocol/graph-ts";
import { OrderCreatedEventData } from "../utils/eventData/OrderCreatedEventData";

export let orderTypes = new Map<string, BigInt>();

Expand All @@ -13,28 +14,28 @@ orderTypes.set("LimitDecrease", BigInt.fromI32(5));
orderTypes.set("StopLossDecrease", BigInt.fromI32(6));
orderTypes.set("Liquidation", BigInt.fromI32(7));

export function saveOrder(eventData: EventData, transaction: Transaction): Order {
let key = eventData.getBytes32Item("key")!.toHexString();
export function saveOrder(eventData: OrderCreatedEventData): Order {
let key = eventData.key;

let order = new Order(key);

order.account = eventData.getAddressItemString("account")!;
order.receiver = eventData.getAddressItemString("receiver")!;
order.callbackContract = eventData.getAddressItemString("callbackContract")!;
order.marketAddress = eventData.getAddressItemString("market")!;
order.swapPath = eventData.getAddressArrayItemString("swapPath")! || [];
order.initialCollateralTokenAddress = eventData.getAddressItemString("initialCollateralToken")!;
order.sizeDeltaUsd = eventData.getUintItem("sizeDeltaUsd")!;
order.initialCollateralDeltaAmount = eventData.getUintItem("initialCollateralDeltaAmount")!;
order.triggerPrice = eventData.getUintItem("triggerPrice")!;
order.acceptablePrice = eventData.getUintItem("acceptablePrice")!;
order.callbackGasLimit = eventData.getUintItem("callbakGasLimit")!;
order.minOutputAmount = eventData.getUintItem("minOutputAmount")!;
order.executionFee = eventData.getUintItem("executionFee")!;
order.updatedAtBlock = eventData.getUintItem("updatedAtBlock")!;
order.orderType = eventData.getUintItem("orderType")!;
order.isLong = eventData.getBoolItem("isLong")!;
order.shouldUnwrapNativeToken = eventData.getBoolItem("shouldUnwrapNativeToken")!;
order.account = eventData.account;
order.receiver = eventData.receiver;
order.callbackContract = eventData.callbackContract;
order.marketAddress = eventData.market;
order.swapPath = eventData.swapPath || [];
order.initialCollateralTokenAddress = eventData.initialCollateralToken;
order.sizeDeltaUsd = eventData.sizeDeltaUsd;
order.initialCollateralDeltaAmount = eventData.initialCollateralDeltaAmount;
order.triggerPrice = eventData.triggerPrice;
order.acceptablePrice = eventData.acceptablePrice;
order.callbackGasLimit = eventData.callbakGasLimit;
order.minOutputAmount = eventData.minOutputAmount;
order.executionFee = eventData.executionFee;
order.updatedAtBlock = eventData.updatedAtBlock;
order.orderType = eventData.orderType;
order.isLong = eventData.isLong;
order.shouldUnwrapNativeToken = eventData.shouldUnwrapNativeToken;

let isFrozen = eventData.getBoolItem("isFrozen")!;

Expand All @@ -44,7 +45,7 @@ export function saveOrder(eventData: EventData, transaction: Transaction): Order
order.status = "Created";
}

order.createdTxn = transaction.id;
order.createdTxn = eventData.transaction.id;
order.save();

return order;
Expand Down
6 changes: 3 additions & 3 deletions synthetics-stats/src/entities/trades.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ import { EventData } from "../utils/eventData";

let ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";

export function saveOrderCreatedTradeAction(eventId: string, order: Order, transaction: Transaction): TradeAction {
let tradeAction = getTradeActionFromOrder(eventId, order);
export function saveOrderCreatedTradeAction(eventData: EventData, order: Order): TradeAction {
let tradeAction = getTradeActionFromOrder(eventData.eventId, order);

tradeAction.eventName = "OrderCreated";
tradeAction.transaction = transaction.id;
tradeAction.transaction = eventData.transaction.id;

tradeAction.save();

Expand Down
21 changes: 19 additions & 2 deletions synthetics-stats/src/handlers/ordersHandlers.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
import { ClaimRef, Order } from "../../generated/schema";
import { saveClaimActionOnOrderExecuted } from "../entities/claims";
import { orderTypes, saveOrderExecutedState } from "../entities/orders";
import {
isFundingFeeSettleOrder,
saveClaimActionOnOrderCreated,
saveClaimActionOnOrderExecuted
} from "../entities/claims";
import { orderTypes, saveOrder, saveOrderExecutedState } from "../entities/orders";
import {
saveOrderCreatedTradeAction,
savePositionDecreaseExecutedTradeAction,
savePositionIncreaseExecutedTradeAction,
saveSwapExecutedTradeAction
} from "../entities/trades";
import { EventData } from "../utils/eventData";
import { OrderCreatedEventData } from "../utils/eventData/OrderCreatedEventData";

export function handleOrderExecuted(eventData: EventData): void {
let order = saveOrderExecutedState(eventData);
Expand Down Expand Up @@ -35,3 +41,14 @@ export function handleOrderExecuted(eventData: EventData): void {
}
}
}

export function handleOrderCreated(eventData: EventData): void {
let data = new OrderCreatedEventData(eventData);
let order = saveOrder(data);

if (isFundingFeeSettleOrder(order)) {
saveClaimActionOnOrderCreated(eventData);
} else {
saveOrderCreatedTradeAction(eventData, order);
}
}
16 changes: 3 additions & 13 deletions synthetics-stats/src/mapping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ import { Transfer } from "../generated/templates/MarketTokenTemplate/MarketToken
import {
saveClaimableFundingFeeInfo as handleClaimableFundingUpdated,
handleCollateralClaimAction,
isFundingFeeSettleOrder,
saveClaimActionOnOrderCancelled,
saveClaimActionOnOrderCreated
saveClaimActionOnOrderCancelled
} from "./entities/claims";
import { getIdFromEvent, getOrCreateTransaction } from "./entities/common";
import { saveDistribution } from "./entities/distributions";
Expand All @@ -27,7 +25,6 @@ import {
import { saveMarketInfo, saveMarketInfoTokensSupply } from "./entities/markets";
import {
orderTypes,
saveOrder,
saveOrderCancelledState,
saveOrderCollateralAutoUpdate,
saveOrderExecutedState,
Expand All @@ -40,7 +37,6 @@ import { getTokenPrice, handleOraclePriceUpdate } from "./entities/prices";
import { handleSwapInfo as saveSwapInfo } from "./entities/swaps";
import {
saveOrderCancelledTradeAction,
saveOrderCreatedTradeAction,
saveOrderFrozenTradeAction,
saveOrderUpdatedTradeAction,
savePositionDecreaseExecutedTradeAction,
Expand All @@ -51,7 +47,7 @@ import { saveUserStat } from "./entities/user";
import { saveUserGmTokensBalanceChange } from "./entities/userBalance";
import { savePositionVolumeInfo, saveSwapVolumeInfo, saveVolumeInfo } from "./entities/volume";
import { handlePositionFeesCollected, handleSwapFeesCollected } from "./handlers/feesHandlers";
import { handleOrderExecuted } from "./handlers/ordersHandlers";
import { handleOrderCreated, handleOrderExecuted } from "./handlers/ordersHandlers";
import { EventData } from "./utils/eventData";
let ADDRESS_ZERO = "0x0000000000000000000000000000000000000000";

Expand Down Expand Up @@ -335,13 +331,7 @@ function handleEventLog2(event: EventLog2, network: string): void {
let eventId = getIdFromEvent(event);

if (eventName == "OrderCreated") {
let transaction = getOrCreateTransaction(event);
let order = saveOrder(eventData, transaction);
if (isFundingFeeSettleOrder(order)) {
saveClaimActionOnOrderCreated(eventData);
} else {
saveOrderCreatedTradeAction(eventId, order, transaction);
}
handleOrderCreated(eventData);
return;
}

Expand Down
115 changes: 115 additions & 0 deletions synthetics-stats/src/utils/eventData/OrderCreatedEventData.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
import { BigInt } from "@graphprotocol/graph-ts";
import { EventData } from "../eventData";

/*
EventLog2: OrderCreated
account: 0xc9e1CE91d3f782499cFe787b6F1d2AF0Ca76C049 (address)
receiver: 0xc9e1CE91d3f782499cFe787b6F1d2AF0Ca76C049 (address)
callbackContract: 0x0000000000000000000000000000000000000000 (address)
uiFeeReceiver: 0x0000000000000000000000000000000000000000 (address)
market: 0x0000000000000000000000000000000000000000 (address)
initialCollateralToken: 0x7b7c6c49fA99b37270077FBFA398748c27046984 (address)
swapPath: ["0x22B9076BBCD93E491999AA748fDD6623fa019532","0x1529876A9348D61C6c4a3EEe1fe6CbF1117Ca315"] (address)
orderType: 0 (uint)
decreasePositionSwapType: 0 (uint)
sizeDeltaUsd: 0 (uint)
initialCollateralDeltaAmount: 1000000000000000000 (uint)
triggerPrice: 0 (uint)
acceptablePrice: 0 (uint)
executionFee: 605000000000000 (uint)
callbackGasLimit: 0 (uint)
minOutputAmount: 1226156718486731 (uint)
updatedAtBlock: 54293843 (uint)
isLong: false (bool)
shouldUnwrapNativeToken: true (bool)
isFrozen: false (bool)
key: 0x880b1710b27cb59aa3c26f34e6776300aefb6758f8cbd648aba0034b8743278e (bytes32)
*/

export class OrderCreatedEventData {
constructor(private eventData: EventData) {}

get account(): string {
return this.eventData.getAddressItemStringOrDie("account");
}

get receiver(): string {
return this.eventData.getAddressItemStringOrDie("receiver");
}

get callbackContract(): string {
return this.eventData.getAddressItemStringOrDie("callbackContract");
}

get uiFeeReceiver(): string {
return this.eventData.getAddressItemStringOrDie("uiFeeReceiver");
}

get market(): string {
return this.eventData.getAddressItemStringOrDie("market");
}

get initialCollateralToken(): string {
return this.eventData.getAddressItemStringOrDie("initialCollateralToken");
}

get swapPath(): Array<string> {
return this.eventData.getAddressArrayItemStringOrDie("swapPath");
}

get orderType(): BigInt {
return this.eventData.getUintItemOrDie("orderType");
}

get decreasePositionSwapType(): BigInt {
return this.eventData.getUintItemOrDie("decreasePositionSwapType");
}

get sizeDeltaUsd(): BigInt {
return this.eventData.getUintItemOrDie("sizeDeltaUsd");
}

get initialCollateralDeltaAmount(): BigInt {
return this.eventData.getUintItemOrDie("initialCollateralDeltaAmount");
}

get triggerPrice(): BigInt {
return this.eventData.getUintItemOrDie("triggerPrice");
}

get acceptablePrice(): BigInt {
return this.eventData.getUintItemOrDie("acceptablePrice");
}

get executionFee(): BigInt {
return this.eventData.getUintItemOrDie("executionFee");
}

get callbackGasLimit(): BigInt {
return this.eventData.getUintItemOrDie("callbackGasLimit");
}

get minOutputAmount(): BigInt {
return this.eventData.getUintItemOrDie("minOutputAmount");
}

get updatedAtBlock(): BigInt {
return this.eventData.getUintItemOrDie("updatedAtBlock");
}

get isLong(): boolean {
return this.eventData.getBoolItemOrDie("isLong");
}

get shouldUnwrapNativeToken(): boolean {
return this.eventData.getBoolItemOrDie("shouldUnwrapNativeToken");
}

get isFrozen(): boolean {
return this.eventData.getBoolItemOrDie("isFrozen");
}

get key(): string {
return this.eventData.getBytes32ItemOrDie("key").toHexString();
}
}

0 comments on commit 5f2f79c

Please sign in to comment.