Use server-side date filtering for device event history chart

The device event history chart previously fetched all events and filtered
client-side. This wires the existing created_from API parameter to the
frontend so filtering happens in the backend.

Also fixes a bug where the Today filter returned no results: rusqlite was
storing datetimes with a space separator ("YYYY-MM-DD HH:MM:SS+00:00")
while SQL filters used RFC 3339 with a T separator, causing string
comparisons to fail for same-day events. All datetime storage across
device_events, devices, and notifications is now consistently RFC 3339.
A migration converts existing records.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
rzuasti
2026-05-28 10:51:19 -04:00
co-authored by Claude Sonnet 4.6
parent 2e8604a354
commit e1287e5a0f
9 changed files with 42 additions and 49 deletions
@@ -0,0 +1,3 @@
UPDATE device_events SET created_on = REPLACE(created_on, ' ', 'T') WHERE created_on LIKE '____-__-__ %';
UPDATE devices SET last_seen = REPLACE(last_seen, ' ', 'T') WHERE last_seen LIKE '____-__-__ %';
UPDATE notifications SET created_on = REPLACE(created_on, ' ', 'T') WHERE created_on LIKE '____-__-__ %';