Switch worker to the Ookla CLI (jitter, packet loss, server, ISP, shareable result URL, bytes). Migration 028 enriches speedtest_results + adds a generic app_settings store. New /speedtest page: KPIs, throughput + latency charts, window stats, configurable schedule (reschedulable cron) & low-speed alert threshold, history table. SV card gains ping/jitter + a link through to the page. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
18 lines
709 B
JavaScript
18 lines
709 B
JavaScript
import { pool } from '../pool.js';
|
|
|
|
// Generic owner-scoped key→jsonb settings store. Used by the speedtest schedule
|
|
// and (later) the theming panel. Keep values small + JSON-serialisable.
|
|
export async function get(key, fallback = null) {
|
|
const { rows } = await pool.query(`SELECT value FROM app_settings WHERE key = $1`, [key]);
|
|
return rows[0] ? rows[0].value : fallback;
|
|
}
|
|
|
|
export async function set(key, value) {
|
|
const { rows } = await pool.query(
|
|
`INSERT INTO app_settings (key, value, updated_at) VALUES ($1, $2::jsonb, now())
|
|
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = now()
|
|
RETURNING value`,
|
|
[key, JSON.stringify(value)]);
|
|
return rows[0].value;
|
|
}
|