From ede007eaa3e63e082242bfe36d83b57a4eea017a Mon Sep 17 00:00:00 2001 From: slasher125 Date: Fri, 13 Jan 2023 22:09:43 +0400 Subject: [PATCH] update perp controller for new stats --- ...1162936_perp-remove-not-null-constraint.js | 7 ++ ...p-remove-null-constraint-second-attempt.js | 7 ++ src/controllers/perpController.js | 80 ++++++++++++++----- 3 files changed, 74 insertions(+), 20 deletions(-) create mode 100644 migrations/1673621162936_perp-remove-not-null-constraint.js create mode 100644 migrations/1673622531274_perp-remove-null-constraint-second-attempt.js diff --git a/migrations/1673621162936_perp-remove-not-null-constraint.js b/migrations/1673621162936_perp-remove-not-null-constraint.js new file mode 100644 index 0000000..ca088d9 --- /dev/null +++ b/migrations/1673621162936_perp-remove-not-null-constraint.js @@ -0,0 +1,7 @@ +/* eslint-disable camelcase */ + +exports.shorthands = undefined; + +exports.up = (pgm) => {}; + +exports.down = (pgm) => {}; diff --git a/migrations/1673622531274_perp-remove-null-constraint-second-attempt.js b/migrations/1673622531274_perp-remove-null-constraint-second-attempt.js new file mode 100644 index 0000000..ca088d9 --- /dev/null +++ b/migrations/1673622531274_perp-remove-null-constraint-second-attempt.js @@ -0,0 +1,7 @@ +/* eslint-disable camelcase */ + +exports.shorthands = undefined; + +exports.up = (pgm) => {}; + +exports.down = (pgm) => {}; diff --git a/src/controllers/perpController.js b/src/controllers/perpController.js index d8cf3e3..d87bc3c 100644 --- a/src/controllers/perpController.js +++ b/src/controllers/perpController.js @@ -22,7 +22,10 @@ const getPerp = async () => { "fundingTimePrevious", "openInterest", "indexPrice", - "fundingRate7dAverage" + "fundingRate7dAverage", + "fundingRate7dSum", + "fundingRate30dAverage", + "fundingRate30dSum" FROM ( SELECT @@ -38,36 +41,73 @@ const getPerp = async () => { ) AS main JOIN ( SELECT - marketplace, - market, - round(avg("fundingRatePrevious"), 5) AS "fundingRate7dAverage" + weeklyStats.marketplace, + weeklyStats.market, + "fundingRate7dAverage", + "fundingRate7dSum", + "fundingRate30dAverage", + "fundingRate30dSum" FROM ( SELECT - DISTINCT ON (marketplace, market, "fundingTimePrevious") * - FROM - $ - WHERE - "fundingTimePrevious" IS NOT NULL - AND timestamp >= NOW() - INTERVAL '$ DAY' - ORDER BY marketplace, market, - "fundingTimePrevious" DESC - ) AS main - GROUP BY - marketplace, - market - ) AS avg7d ON avg7d.marketplace = main.marketplace - AND avg7d.market = main.market + round(avg("fundingRatePrevious"), 10) AS "fundingRate7dAverage", + round(sum("fundingRatePrevious"), 10) AS "fundingRate7dSum" + FROM + ( + SELECT + DISTINCT ON (marketplace, market, "fundingTimePrevious") * + FROM + $ + WHERE + "fundingTimePrevious" IS NOT NULL + AND timestamp >= NOW() - INTERVAL '$ DAY' + ORDER BY + marketplace, + market, + "fundingTimePrevious" DESC + ) AS main + GROUP BY + marketplace, + market + ) AS weeklyStats + JOIN ( + SELECT + marketplace, + market, + round(avg("fundingRatePrevious"), 10) AS "fundingRate30dAverage", + round(sum("fundingRatePrevious"), 10) AS "fundingRate30dSum" + FROM + ( + SELECT + DISTINCT ON (marketplace, market, "fundingTimePrevious") * + FROM + $ + WHERE + "fundingTimePrevious" IS NOT NULL + AND timestamp >= NOW() - INTERVAL '$ DAY' + ORDER BY + marketplace, + market, + "fundingTimePrevious" DESC + ) AS main + GROUP BY + marketplace, + market + ) AS monthlyStats ON weeklyStats.marketplace = monthlyStats.marketplace + AND weeklyStats.market = monthlyStats.market + ) AS stats ON stats.marketplace = main.marketplace + AND stats.market = main.market `, { compress: true } ); const response = await conn.query(query, { perpTable: tableName, - age: 3, - fundingRate7dAverageAge: 7, + age: 3, // last 3 hours + ageWeeklyStats: 7, + ageMonthlyStats: 30, }); if (!response) {