Assist_Design/apps/bff/src/modules/catalog/catalog-health.controller.ts

32 lines
928 B
TypeScript
Raw Normal View History

import { Controller, Get } from "@nestjs/common";
import { CatalogCacheService } from "./services/catalog-cache.service.js";
import type { CatalogCacheSnapshot } from "./services/catalog-cache.service.js";
import { Public } from "@bff/modules/auth/decorators/public.decorator.js";
interface CatalogCacheHealthResponse {
timestamp: string;
metrics: CatalogCacheSnapshot;
ttl: {
catalogSeconds: number | null;
eligibilitySeconds: number | null;
staticSeconds: number | null;
volatileSeconds: number;
};
}
@Controller("health/catalog")
@Public()
export class CatalogHealthController {
constructor(private readonly catalogCache: CatalogCacheService) {}
@Get("cache")
getCacheMetrics(): CatalogCacheHealthResponse {
const ttl = this.catalogCache.getTtlConfiguration();
return {
timestamp: new Date().toISOString(),
metrics: this.catalogCache.getMetrics(),
ttl,
};
}
}