diff --git a/src/payload/PayloadClient.ts b/src/payload/PayloadClient.ts index 479617f..43df5c3 100644 --- a/src/payload/PayloadClient.ts +++ b/src/payload/PayloadClient.ts @@ -45,6 +45,16 @@ export class PayloadClient { }) } + async isReachable(): Promise { + try { + const response = await fetch(this.baseUrl, { method: 'GET' }) + // Any HTTP response (even 401/403) means the API is alive + return response.status < 500 + } catch { + return false + } + } + private async request(url: string, init?: RequestInit): Promise { const headers: Record = { 'Content-Type': 'application/json', diff --git a/src/server.ts b/src/server.ts index 71e78ce..1c0a08c 100644 --- a/src/server.ts +++ b/src/server.ts @@ -137,13 +137,7 @@ app.post('/webhook', webhookHandler) // Health check app.get('/health', async () => { const redisOk = redis.status === 'ready' - let payloadOk = false - try { - await payloadClient.find('users', { limit: '0' }) - payloadOk = true - } catch { - // Payload API down - } + const payloadOk = await payloadClient.isReachable() const status = redisOk && payloadOk ? 'ok' : 'degraded' return {