-- Copyright © 2025-26 l5yth & contributors -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. PRAGMA journal_mode=WAL; CREATE TABLE IF NOT EXISTS nodes ( node_id TEXT PRIMARY KEY, num INTEGER, short_name TEXT, long_name TEXT, macaddr TEXT, hw_model TEXT, role TEXT, public_key TEXT, is_unmessagable BOOLEAN, is_favorite BOOLEAN, hops_away INTEGER, snr REAL, rssi INTEGER, last_heard INTEGER, first_heard INTEGER, battery_level REAL, voltage REAL, channel_utilization REAL, air_util_tx REAL, uptime_seconds INTEGER, position_time INTEGER, location_source TEXT, precision_bits INTEGER, latitude REAL, longitude REAL, altitude REAL, lora_freq INTEGER, modem_preset TEXT, protocol TEXT NOT NULL DEFAULT 'meshtastic', synthetic BOOLEAN NOT NULL DEFAULT 0, -- Newest time this node was heard via a key-authenticated record (a -- non-synthetic upsert carrying its public key). Name-inferred paths -- (message touches, chat placeholders) never write it; NULL means no keyed -- evidence has been recorded since the column shipped (SPEC MR1). last_advert_heard INTEGER ); CREATE INDEX IF NOT EXISTS idx_nodes_last_heard ON nodes(last_heard); CREATE INDEX IF NOT EXISTS idx_nodes_hw_model ON nodes(hw_model); CREATE INDEX IF NOT EXISTS idx_nodes_latlon ON nodes(latitude, longitude); CREATE INDEX IF NOT EXISTS idx_nodes_long_name ON nodes(long_name);