feat: startHeartbeat — 5s interval update last_seen_at, stops on record-not-found
This commit is contained in:
parent
994f28f103
commit
1c7cb04d2e
1 changed files with 25 additions and 0 deletions
25
src/presence/heartbeat.ts
Normal file
25
src/presence/heartbeat.ts
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import { prisma } from '../prisma.js'
|
||||
|
||||
export function startHeartbeat(opts: {
|
||||
tokenId: string
|
||||
intervalMs?: number
|
||||
}): { stop: () => void } {
|
||||
const ms = opts.intervalMs ?? 5_000
|
||||
|
||||
const timer = setInterval(async () => {
|
||||
try {
|
||||
const result = await prisma.claudeWorker.updateMany({
|
||||
where: { token_id: opts.tokenId },
|
||||
data: { last_seen_at: new Date() },
|
||||
})
|
||||
if (result.count === 0) {
|
||||
console.warn('[scrum4me-mcp] heartbeat: worker record not found — token may be revoked, stopping heartbeat')
|
||||
clearInterval(timer)
|
||||
}
|
||||
} catch (err) {
|
||||
console.warn('[scrum4me-mcp] heartbeat error:', err)
|
||||
}
|
||||
}, ms)
|
||||
|
||||
return { stop: () => clearInterval(timer) }
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue