mirror of
https://github.com/benjamin-wilson/public-pool.git
synced 2026-09-29 09:05:06 -07:00
Optimize latest completed accounting bucket lookup
This commit is contained in:
@@ -258,19 +258,22 @@ export class ShareAccountingService implements OnModuleDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const rows = await this.acceptedShareRepository.query(`
|
const rows = await this.acceptedShareRepository.query(`
|
||||||
WITH clock AS (
|
WITH clock AS MATERIALIZED (
|
||||||
SELECT
|
SELECT
|
||||||
time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket"
|
time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket"
|
||||||
),
|
),
|
||||||
bounds AS (
|
latest_bucket AS MATERIALIZED (
|
||||||
|
SELECT "bucket"
|
||||||
|
FROM "accepted_share_10m", clock
|
||||||
|
WHERE "bucket" < clock."currentBucket"
|
||||||
|
ORDER BY "bucket" DESC
|
||||||
|
LIMIT 1
|
||||||
|
),
|
||||||
|
bounds AS MATERIALIZED (
|
||||||
SELECT
|
SELECT
|
||||||
"currentBucket",
|
"currentBucket",
|
||||||
COALESCE(
|
COALESCE(
|
||||||
(
|
(SELECT "bucket" FROM latest_bucket),
|
||||||
SELECT MAX("bucket")
|
|
||||||
FROM "accepted_share_10m", clock
|
|
||||||
WHERE "bucket" < clock."currentBucket"
|
|
||||||
),
|
|
||||||
"currentBucket" - INTERVAL '10 minutes'
|
"currentBucket" - INTERVAL '10 minutes'
|
||||||
) AS "latestCompletedBucket"
|
) AS "latestCompletedBucket"
|
||||||
FROM clock
|
FROM clock
|
||||||
@@ -353,19 +356,22 @@ export class ShareAccountingService implements OnModuleDestroy {
|
|||||||
private async loadSummary(filter: AccountingFilter): Promise<ShareAccountingSummary> {
|
private async loadSummary(filter: AccountingFilter): Promise<ShareAccountingSummary> {
|
||||||
const { whereSql, params } = this.buildWhereClause(filter);
|
const { whereSql, params } = this.buildWhereClause(filter);
|
||||||
const [summary] = await this.acceptedShareRepository.query(`
|
const [summary] = await this.acceptedShareRepository.query(`
|
||||||
WITH clock AS (
|
WITH clock AS MATERIALIZED (
|
||||||
SELECT
|
SELECT
|
||||||
time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket"
|
time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket"
|
||||||
),
|
),
|
||||||
bounds AS (
|
latest_bucket AS MATERIALIZED (
|
||||||
|
SELECT "bucket"
|
||||||
|
FROM "accepted_share_10m", clock
|
||||||
|
WHERE "bucket" < clock."currentBucket"
|
||||||
|
ORDER BY "bucket" DESC
|
||||||
|
LIMIT 1
|
||||||
|
),
|
||||||
|
bounds AS MATERIALIZED (
|
||||||
SELECT
|
SELECT
|
||||||
"currentBucket",
|
"currentBucket",
|
||||||
COALESCE(
|
COALESCE(
|
||||||
(
|
(SELECT "bucket" FROM latest_bucket),
|
||||||
SELECT MAX("bucket")
|
|
||||||
FROM "accepted_share_10m", clock
|
|
||||||
WHERE "bucket" < clock."currentBucket"
|
|
||||||
),
|
|
||||||
"currentBucket" - INTERVAL '10 minutes'
|
"currentBucket" - INTERVAL '10 minutes'
|
||||||
) AS "latestCompletedBucket"
|
) AS "latestCompletedBucket"
|
||||||
FROM clock
|
FROM clock
|
||||||
|
|||||||
Reference in New Issue
Block a user