Release v2.10.3
This commit is contained in:
+25
-3
@@ -1,3 +1,5 @@
|
||||
// Database pool setup and lifecycle maintenance for persisted onboarding devices.
|
||||
|
||||
const mysql = require('mysql2/promise');
|
||||
|
||||
function createPool() {
|
||||
@@ -15,14 +17,34 @@ function createPool() {
|
||||
}
|
||||
|
||||
async function pruneStaleOnboardingDevices(pool) {
|
||||
// Uncompleted pairings expire quickly; completed bindings use their persisted heartbeat instead.
|
||||
await pool.query(
|
||||
`DELETE FROM d_onboarding_devices
|
||||
WHERE screen_id IS NULL
|
||||
AND modified_at < (CURRENT_TIMESTAMP - INTERVAL 1 MINUTE)`
|
||||
WHERE (screen_id IS NULL
|
||||
AND modified_at < (CURRENT_TIMESTAMP - INTERVAL 15 MINUTE))
|
||||
OR (last_seen_at IS NOT NULL
|
||||
AND last_seen_at < (CURRENT_TIMESTAMP - INTERVAL 24 HOUR))`
|
||||
);
|
||||
}
|
||||
|
||||
async function touchOnboardingDeviceLastSeen(pool, deviceId) {
|
||||
const deviceIds = (Array.isArray(deviceId) ? deviceId : [deviceId])
|
||||
.map(function (value) { return String(value || '').trim(); })
|
||||
.filter(Boolean);
|
||||
if (!deviceIds.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
await pool.query(
|
||||
`UPDATE d_onboarding_devices
|
||||
SET last_seen_at = CURRENT_TIMESTAMP
|
||||
WHERE device_id IN (${deviceIds.map(function () { return '?'; }).join(', ')})`,
|
||||
deviceIds
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
createPool,
|
||||
pruneStaleOnboardingDevices
|
||||
pruneStaleOnboardingDevices,
|
||||
touchOnboardingDeviceLastSeen
|
||||
};
|
||||
Reference in New Issue
Block a user