update perp controller for new stats

This commit is contained in:
slasher125
2023-01-13 22:09:43 +04:00
parent 0103b5fc8b
commit ede007eaa3
3 changed files with 74 additions and 20 deletions

View File

@@ -0,0 +1,7 @@
/* eslint-disable camelcase */
exports.shorthands = undefined;
exports.up = (pgm) => {};
exports.down = (pgm) => {};

View File

@@ -0,0 +1,7 @@
/* eslint-disable camelcase */
exports.shorthands = undefined;
exports.up = (pgm) => {};
exports.down = (pgm) => {};

View File

@@ -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
$<perpTable:name>
WHERE
"fundingTimePrevious" IS NOT NULL
AND timestamp >= NOW() - INTERVAL '$<fundingRate7dAverageAge> 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
$<perpTable:name>
WHERE
"fundingTimePrevious" IS NOT NULL
AND timestamp >= NOW() - INTERVAL '$<ageWeeklyStats> 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
$<perpTable:name>
WHERE
"fundingTimePrevious" IS NOT NULL
AND timestamp >= NOW() - INTERVAL '$<ageMonthlyStats> 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) {