2025-11-06 13:26:30 +09:00
|
|
|
import { Controller, Get } from "@nestjs/common";
|
2025-11-06 16:32:29 +09:00
|
|
|
import { CatalogCacheService, CatalogCacheSnapshot } from "./services/catalog-cache.service";
|
|
|
|
|
|
|
|
|
|
interface CatalogCacheHealthResponse {
|
|
|
|
|
timestamp: string;
|
|
|
|
|
metrics: CatalogCacheSnapshot;
|
|
|
|
|
ttl: {
|
|
|
|
|
catalogSeconds: number | null;
|
|
|
|
|
eligibilitySeconds: number | null;
|
|
|
|
|
staticSeconds: number | null;
|
|
|
|
|
volatileSeconds: number;
|
|
|
|
|
};
|
|
|
|
|
}
|
2025-11-06 13:26:30 +09:00
|
|
|
|
|
|
|
|
@Controller("health/catalog")
|
|
|
|
|
export class CatalogHealthController {
|
|
|
|
|
constructor(private readonly catalogCache: CatalogCacheService) {}
|
|
|
|
|
|
|
|
|
|
@Get("cache")
|
2025-11-06 16:32:29 +09:00
|
|
|
getCacheMetrics(): CatalogCacheHealthResponse {
|
|
|
|
|
const ttl = this.catalogCache.getTtlConfiguration();
|
2025-11-06 13:26:30 +09:00
|
|
|
return {
|
|
|
|
|
timestamp: new Date().toISOString(),
|
|
|
|
|
metrics: this.catalogCache.getMetrics(),
|
2025-11-06 16:32:29 +09:00
|
|
|
ttl,
|
2025-11-06 13:26:30 +09:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|