27 lines
767 B
JavaScript
27 lines
767 B
JavaScript
const cron = require("node-cron");
|
|
const pool = require("./db");
|
|
const runCheck = require("./checkRunner");
|
|
|
|
async function scheduleChecks() {
|
|
const { rows } = await pool.query("SELECT * FROM checks WHERE active = true");
|
|
|
|
rows.forEach(check => {
|
|
cron.schedule(`*/${check.schedule_seconds} * * * * *`, async () => {
|
|
const result = await runCheck(check);
|
|
|
|
await pool.query(
|
|
`INSERT INTO results (check_id, status, message, duration_ms)
|
|
VALUES ($1,$2,$3,$4)`,
|
|
[check.id, result.status, result.message, result.duration]
|
|
);
|
|
|
|
await pool.query(
|
|
`UPDATE checks SET last_run = NOW(), last_status = $1 WHERE id = $2`,
|
|
[result.status, check.id]
|
|
);
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = scheduleChecks;
|