diff --git a/db/knex_migrations/2026-01-28-0001-add-numeric-value-to-heartbeat.js b/db/knex_migrations/2026-01-28-0001-add-numeric-value-to-heartbeat.js index ed219d0a5..0264a4811 100644 --- a/db/knex_migrations/2026-01-28-0001-add-numeric-value-to-heartbeat.js +++ b/db/knex_migrations/2026-01-28-0001-add-numeric-value-to-heartbeat.js @@ -1,15 +1,21 @@ -exports.up = function (knex) { - return knex.schema.alterTable("heartbeat", function (table) { - table - .float("numeric_value") - .nullable() - .defaultTo(null) - .comment("Numeric value from monitor check (e.g., from JSON query or SNMP)"); - }); +exports.up = async function (knex) { + const hasColumn = await knex.schema.hasColumn("heartbeat", "numeric_value"); + if (!hasColumn) { + return knex.schema.alterTable("heartbeat", function (table) { + table + .float("numeric_value") + .nullable() + .defaultTo(null) + .comment("Numeric value from monitor check (e.g., from JSON query or SNMP)"); + }); + } }; -exports.down = function (knex) { - return knex.schema.alterTable("heartbeat", function (table) { - table.dropColumn("numeric_value"); - }); +exports.down = async function (knex) { + const hasColumn = await knex.schema.hasColumn("heartbeat", "numeric_value"); + if (hasColumn) { + return knex.schema.alterTable("heartbeat", function (table) { + table.dropColumn("numeric_value"); + }); + } }; diff --git a/server/uptime-calculator.js b/server/uptime-calculator.js index 3fe7c1e9f..003d06a64 100644 --- a/server/uptime-calculator.js +++ b/server/uptime-calculator.js @@ -227,6 +227,7 @@ class UptimeCalculator { * @param {object} dailyData Daily data object * @param {number} status Status value * @param {number} flatStatus Flattened status value + * @returns {void} */ updateStatusCounts(minutelyData, hourlyData, dailyData, status, flatStatus) { if (status === MAINTENANCE) { @@ -251,6 +252,7 @@ class UptimeCalculator { * @param {object} hourlyData Hourly data object * @param {object} dailyData Daily data object * @param {number} ping Ping value + * @returns {void} */ updatePing(minutelyData, hourlyData, dailyData, ping) { if (isNaN(ping)) { @@ -298,6 +300,7 @@ class UptimeCalculator { * @param {object} hourlyData Hourly data object * @param {object} dailyData Daily data object * @param {number} numericValue Numeric value + * @returns {void} */ updateNumeric(minutelyData, hourlyData, dailyData, numericValue) { if (numericValue === null || isNaN(numericValue)) {