From 2f57908a509c84a1b5e944cc6ef1745ad0a4d1a8 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Wed, 17 Jun 2026 14:24:17 +0000 Subject: [PATCH] fix: storeFact always bumps updated_at; fix $fresh() wrong column name ON DUPLICATE KEY UPDATE was not touching updated_at, so if a site's status didn't change MySQL never fired the ON UPDATE trigger and the row timestamp stayed 6 days stale. do_server.php's 15-min freshness window then returned empty sites. Also fixes $fresh() querying WHERE fact_category= (non-existent column) instead of WHERE category=, which always returned no rows. Co-Authored-By: Claude Sonnet 4.6 --- api/endpoints/facts_collector.php | 2 +- api/lib/kb_engine.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/endpoints/facts_collector.php b/api/endpoints/facts_collector.php index 646cae7..de2bdb1 100644 --- a/api/endpoints/facts_collector.php +++ b/api/endpoints/facts_collector.php @@ -23,7 +23,7 @@ function collect_all(): array { // Prevents expensive external calls when data is still fresh. $fresh = function(string $cat, int $secs): bool { $row = JarvisDB::query( - 'SELECT updated_at FROM kb_facts WHERE fact_category=? ORDER BY updated_at DESC LIMIT 1', + 'SELECT updated_at FROM kb_facts WHERE category=? ORDER BY updated_at DESC LIMIT 1', [$cat] ); if (empty($row[0]['updated_at'])) return false; diff --git a/api/lib/kb_engine.php b/api/lib/kb_engine.php index 6be9ede..ca8efac 100644 --- a/api/lib/kb_engine.php +++ b/api/lib/kb_engine.php @@ -105,7 +105,7 @@ class KBEngine { JarvisDB::execute( 'INSERT INTO kb_facts (category, fact_key, fact_value, host, expires_at) VALUES (?,?,?,?,?) - ON DUPLICATE KEY UPDATE fact_value=VALUES(fact_value), expires_at=VALUES(expires_at)', + ON DUPLICATE KEY UPDATE fact_value=VALUES(fact_value), expires_at=VALUES(expires_at), updated_at=NOW()', [$category, $key, $value, $host, $expires] ); }