From 842b49e8c4c10ec84157cf7383c8a4995047ecfc Mon Sep 17 00:00:00 2001 From: Kpa-clawbot <259247574+Kpa-clawbot@users.noreply.github.com> Date: Fri, 27 Mar 2026 01:29:22 -0700 Subject: [PATCH] perf: fast-path count for unfiltered /api/packets (skip packets_v scan) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- cmd/server/db.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cmd/server/db.go b/cmd/server/db.go index 9fc1e6e7..f82d7b2c 100644 --- a/cmd/server/db.go +++ b/cmd/server/db.go @@ -175,9 +175,14 @@ func (db *DB) QueryPackets(q PacketQuery) (*PacketResult, error) { } var total int - countSQL := fmt.Sprintf("SELECT COUNT(*) FROM packets_v %s", w) - if err := db.conn.QueryRow(countSQL, args...).Scan(&total); err != nil { - return nil, err + if len(where) == 0 { + // Fast path: no filters, use direct table count + db.conn.QueryRow("SELECT COUNT(*) FROM observations").Scan(&total) + } else { + countSQL := fmt.Sprintf("SELECT COUNT(*) FROM packets_v %s", w) + if err := db.conn.QueryRow(countSQL, args...).Scan(&total); err != nil { + return nil, err + } } querySQL := fmt.Sprintf("SELECT id, raw_hex, timestamp, observer_id, observer_name, direction, snr, rssi, score, hash, route_type, payload_type, payload_version, path_json, decoded_json, created_at FROM packets_v %s ORDER BY timestamp %s LIMIT ? OFFSET ?", w, q.Order)