feat(devices): compute effective online status with stale heartbeat ttl

This commit is contained in:
2026-02-23 14:35:00 +00:00
parent 46c6294e48
commit 53ad0adead
7 changed files with 148 additions and 3 deletions

View File

@@ -7,6 +7,8 @@ import { deviceLinks, devices } from '../db/schema';
import { requireAuth } from '../middleware/auth';
import { requireDeviceAuth } from '../middleware/device-auth';
import { createDeviceToken } from '../utils/device-token';
import { getEffectiveDeviceStatus } from '../utils/device-status';
import { getDeviceOnlineStaleSeconds } from '../utils/env';
const router = Router();
@@ -126,7 +128,19 @@ router.get('/', requireAuth, async (req, res) => {
orderBy: [desc(devices.updatedAt)],
});
res.json({ count: result.length, devices: result });
const now = new Date();
const staleAfterSeconds = getDeviceOnlineStaleSeconds();
const effectiveDevices = result.map((device) => ({
...device,
status: getEffectiveDeviceStatus({
status: device.status,
lastSeenAt: device.lastSeenAt,
now,
staleAfterSeconds,
}),
}));
res.json({ count: effectiveDevices.length, devices: effectiveDevices });
});
router.patch('/:deviceId', requireAuth, async (req, res) => {