-- Tabela para armazenar pontos GPS em tempo real
CREATE TABLE IF NOT EXISTS rastreamento_tempo_real (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    viagem_id BIGINT NOT NULL,
    latitude DECIMAL(10,8) NOT NULL,
    longitude DECIMAL(11,8) NOT NULL,
    velocidade INT DEFAULT 0,
    precisao DECIMAL(10,2) DEFAULT 0,
    altitude DECIMAL(10,2) DEFAULT 0,
    battery_level INT DEFAULT 100,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (viagem_id) REFERENCES viagens(id)
) ENGINE=InnoDB;

-- Tabela para status dos técnicos
CREATE TABLE IF NOT EXISTS status_tecnicos (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    tecnico_id VARCHAR(50) NOT NULL,
    ultima_latitude DECIMAL(10,8),
    ultima_longitude DECIMAL(11,8),
    ultimo_update TIMESTAMP,
    status ENUM('offline', 'online', 'atrasado') DEFAULT 'offline',
    UNIQUE KEY (tecnico_id)
) ENGINE=InnoDB;

-- Índices para otimização
CREATE INDEX idx_rastreamento_viagem ON rastreamento_tempo_real(viagem_id);
CREATE INDEX idx_rastreamento_timestamp ON rastreamento_tempo_real(timestamp);
CREATE INDEX idx_status_tecnico ON status_tecnicos(tecnico_id);

-- Trigger para limpar pontos antigos (manter apenas últimas 24h)
DELIMITER //
CREATE EVENT IF NOT EXISTS limpar_pontos_antigos
ON SCHEDULE EVERY 1 HOUR
DO
BEGIN
    DELETE FROM rastreamento_tempo_real 
    WHERE timestamp < DATE_SUB(NOW(), INTERVAL 24 HOUR);
END //
DELIMITER ; 