diff --git a/apps/backend/src/common/dto/api-response.dto.ts b/apps/backend/src/common/dto/api-response.dto.ts index 54013b0..1c6e4f8 100644 --- a/apps/backend/src/common/dto/api-response.dto.ts +++ b/apps/backend/src/common/dto/api-response.dto.ts @@ -13,6 +13,14 @@ export class ApiResponseMeta { } } +export class ApiEnvelopePayload { + constructor( + public readonly data: T, + public readonly fromCache: boolean, + public readonly cachedAt: string | null, + ) {} +} + export class ApiResponse { data: T; meta: ApiResponseMeta; diff --git a/apps/backend/src/common/interceptors/transform.interceptor.ts b/apps/backend/src/common/interceptors/transform.interceptor.ts index cd6f888..507025a 100644 --- a/apps/backend/src/common/interceptors/transform.interceptor.ts +++ b/apps/backend/src/common/interceptors/transform.interceptor.ts @@ -1,7 +1,7 @@ import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { ApiResponse } from '../dto/api-response.dto'; +import { ApiEnvelopePayload, ApiResponse } from '../dto/api-response.dto'; @Injectable() export class TransformInterceptor implements NestInterceptor> { @@ -9,6 +9,9 @@ export class TransformInterceptor implements NestInterceptor { if (data instanceof ApiResponse) return data; + if (data instanceof ApiEnvelopePayload) { + return new ApiResponse(data.data, data.fromCache, data.cachedAt); + } return new ApiResponse(data, false, null); }), );