diff --git a/apps/api/src/deployment/routes/deployments/deployments.router.ts b/apps/api/src/deployment/routes/deployments/deployments.router.ts index b6df02dbcc..82dcb5279b 100644 --- a/apps/api/src/deployment/routes/deployments/deployments.router.ts +++ b/apps/api/src/deployment/routes/deployments/deployments.router.ts @@ -293,6 +293,7 @@ const fallbackListRoute = createRoute({ summary: "List deployments (database fallback)", tags: ["Deployments"], security: SECURITY_NONE, + cache: { maxAge: 10, staleWhileRevalidate: 30 }, request: { query: FallbackDeploymentListQuerySchema }, @@ -330,6 +331,7 @@ const fallbackInfoRoute = createRoute({ summary: "Get deployment info (database fallback)", tags: ["Deployments"], security: SECURITY_NONE, + cache: { maxAge: 10, staleWhileRevalidate: 30 }, request: { query: FallbackDeploymentInfoQuerySchema }, diff --git a/apps/api/src/deployment/services/fallback-deployment-reader/fallback-deployment-reader.service.ts b/apps/api/src/deployment/services/fallback-deployment-reader/fallback-deployment-reader.service.ts index 89434f8287..f3f9127774 100644 --- a/apps/api/src/deployment/services/fallback-deployment-reader/fallback-deployment-reader.service.ts +++ b/apps/api/src/deployment/services/fallback-deployment-reader/fallback-deployment-reader.service.ts @@ -2,12 +2,14 @@ import { Deployment, DeploymentGroup, DeploymentGroupResource } from "@akashnetw import { inject, singleton } from "tsyringe"; import { USDC_IBC_DENOMS } from "@src/billing/config/network.config"; +import { cacheResponse, Memoize } from "@src/caching/helpers"; import type { CoreConfig } from "@src/core/providers/config.provider"; import { CORE_CONFIG } from "@src/core/providers/config.provider"; import { DeploymentRepository } from "@src/deployment/repositories/deployment/deployment.repository"; import { DatabaseDeploymentListParams } from "@src/deployment/repositories/deployment/deployment.repository"; import { RestAkashDeploymentInfoResponse } from "@src/types/rest/akashDeploymentInfoResponse"; import { RestAkashDeploymentListResponse } from "@src/types/rest/akashDeploymentListResponse"; +import { averageBlockTime } from "@src/utils/constants"; export const UNKNOWN_DB_PLACEHOLDER = "unknown_value"; @@ -23,6 +25,10 @@ export class FallbackDeploymentReaderService { } async findAll(params: DatabaseDeploymentListParams): Promise { + return cacheResponse(averageBlockTime, `FallbackDeploymentReaderService#findAll#${JSON.stringify(params)}`, () => this.findAllUncached(params)); + } + + private async findAllUncached(params: DatabaseDeploymentListParams): Promise { const { skip = 0, limit = 100, key, countTotal = true } = params; const { count: total, rows: deployments } = await this.deploymentRepository.findDeploymentsWithPagination(params); @@ -94,6 +100,7 @@ export class FallbackDeploymentReaderService { }; } + @Memoize({ ttlInSeconds: averageBlockTime }) async findByOwnerAndDseq(owner: string, dseq: string): Promise { const deployment = await this.deploymentRepository.findByIdWithGroups(owner, dseq);