Distributed cache * cache deleteKey now uses an options object instead of a lonely argument variable fuzzy * merge * remove debug logs and cleanup * cleanup * add fault handling * add fault handling * add pid when logging redis client creation * add identifier when logging redis client creation * cleanup * feat: add redis-api as it's own app * feature: use http wrapper for redis * feat: add the possibility to fallback to unstable_cache * Add error handling if redis cache is unresponsive * add logging for unstable_cache * merge * don't cache errors * fix: metadatabase on branchdeploys * Handle when /en/destinations throws add ErrorBoundary * Add sentry-logging when ErrorBoundary catches exception * Fix error handling for distributed cache * cleanup code * Added Application Insights back * Update generateApiKeys script and remove duplicate * Merge branch 'feature/redis' of bitbucket.org:scandic-swap/web into feature/redis * merge Approved-by: Linus Flood
35 lines
878 B
TypeScript
35 lines
878 B
TypeScript
import Elysia, { t } from "elysia";
|
|
|
|
import { redis } from "@/services/redis";
|
|
import { baseLogger } from "@/utils/logger";
|
|
|
|
export const healthRoutes = new Elysia().get(
|
|
"/health",
|
|
async ({ set, error }) => {
|
|
const perf = performance.now();
|
|
try {
|
|
await redis.ping();
|
|
} catch (e) {
|
|
baseLogger.error("Redis connection error:", e);
|
|
console.log("Redis connection error:", e);
|
|
|
|
return error(503, { healthy: false });
|
|
}
|
|
|
|
const duration = performance.now() - perf;
|
|
baseLogger.info(`Service healthy: ${duration.toFixed(2)} ms`);
|
|
|
|
return { healthy: true };
|
|
},
|
|
{
|
|
response: {
|
|
200: t.Object({
|
|
healthy: t.Boolean(),
|
|
}),
|
|
503: t.Object({
|
|
healthy: t.Boolean(),
|
|
}),
|
|
},
|
|
}
|
|
);
|