|
|
@ -18,6 +18,7 @@ router.get("/api/entry-page", async (_, response) => { |
|
|
|
|
|
|
|
router.get("/api/push/:pushToken", async (request, response) => { |
|
|
|
try { |
|
|
|
|
|
|
|
let pushToken = request.params.pushToken; |
|
|
|
let msg = request.query.msg || "OK"; |
|
|
|
let ping = request.query.ping; |
|
|
@ -30,12 +31,20 @@ router.get("/api/push/:pushToken", async (request, response) => { |
|
|
|
throw new Error("Monitor not found or not active."); |
|
|
|
} |
|
|
|
|
|
|
|
const previousHeartbeatTime = await R.getCell(` |
|
|
|
SELECT time FROM heartbeat |
|
|
|
WHERE id = (select MAX(id) from heartbeat where monitor_id = ?) |
|
|
|
`, [
|
|
|
|
monitor.id |
|
|
|
]); |
|
|
|
|
|
|
|
let bean = R.dispense("heartbeat"); |
|
|
|
bean.monitor_id = monitor.id; |
|
|
|
bean.time = R.isoDateTime(dayjs.utc()); |
|
|
|
bean.status = UP; |
|
|
|
bean.msg = msg; |
|
|
|
bean.ping = ping; |
|
|
|
bean.duration = dayjs(bean.time).diff(dayjs(previousHeartbeatTime), "second"); |
|
|
|
|
|
|
|
await R.store(bean); |
|
|
|
|
|
|
|