USE `androidcast_crashes`;
CREATE TABLE IF NOT EXISTS graph_sessions (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    session_id VARCHAR(96) NOT NULL,
    company_id INT UNSIGNED NOT NULL DEFAULT 1,
    user_id INT UNSIGNED NULL,
    device_id VARCHAR(128) NULL,
    app_version VARCHAR(64) NULL,
    sdk_int INT NULL,
    started_at_ms BIGINT NOT NULL,
    ended_at_ms BIGINT NOT NULL,
    duration_s INT NOT NULL,
    completed TINYINT(1) NOT NULL DEFAULT 1,
    direction ENUM('sender','receiver') NOT NULL DEFAULT 'sender',
    transport VARCHAR(24) NOT NULL DEFAULT 'wifi',
    avg_kbps INT NOT NULL DEFAULT 0,
    recv_kbps INT NOT NULL DEFAULT 0,
    packet_loss_pct DECIMAL(6,3) NOT NULL DEFAULT 0.0,
    ntp_source VARCHAR(32) NOT NULL DEFAULT 'device',
    ntp_correction_s INT NULL,
    install_source VARCHAR(32) NOT NULL DEFAULT 'direct',
    meta_json LONGTEXT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY uq_graph_session_id (session_id),
    KEY idx_graph_company_time (company_id, started_at_ms),
    KEY idx_graph_device (device_id),
    KEY idx_graph_app_version (app_version)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
