-- 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.

CREATE TABLE IF NOT EXISTS traces (
    id          INTEGER PRIMARY KEY,
    request_id  INTEGER,
    src         INTEGER,
    dest        INTEGER,
    rx_time     INTEGER NOT NULL,
    rx_iso      TEXT NOT NULL,
    rssi        INTEGER,
    snr         REAL,
    elapsed_ms  INTEGER,
    ingestor    TEXT
);

CREATE TABLE IF NOT EXISTS trace_hops (
    id         INTEGER PRIMARY KEY,
    trace_id   INTEGER NOT NULL,
    hop_index  INTEGER NOT NULL,
    node_id    INTEGER NOT NULL,
    FOREIGN KEY(trace_id) REFERENCES traces(id) ON DELETE CASCADE
);

CREATE INDEX IF NOT EXISTS idx_traces_rx_time ON traces(rx_time);
CREATE INDEX IF NOT EXISTS idx_traces_request ON traces(request_id);
CREATE INDEX IF NOT EXISTS idx_trace_hops_trace ON trace_hops(trace_id);
CREATE INDEX IF NOT EXISTS idx_trace_hops_node ON trace_hops(node_id);
