USE bulo;

ALTER TABLE corridas
  ADD COLUMN IF NOT EXISTS origem_endereco VARCHAR(255) NULL AFTER origem_lng,
  ADD COLUMN IF NOT EXISTS destino_endereco VARCHAR(255) NULL AFTER destino_lng,
  ADD COLUMN IF NOT EXISTS oferta_lista_liberada TINYINT(1) NOT NULL DEFAULT 0 AFTER status,
  ADD COLUMN IF NOT EXISTS oferta_lista_em DATETIME NULL AFTER oferta_lista_liberada;

CREATE TABLE IF NOT EXISTS corrida_ofertas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_corrida INT NOT NULL,
  id_motorista INT NOT NULL,
  rodada TINYINT NOT NULL DEFAULT 1,
  ordem TINYINT NOT NULL DEFAULT 1,
  status ENUM('pendente', 'aceita', 'recusada', 'expirada', 'cancelada') NOT NULL DEFAULT 'pendente',
  distancia_ate_origem_km DECIMAL(10,3) NULL,
  enviado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  expira_em DATETIME NOT NULL,
  respondido_em DATETIME NULL,
  atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_corrida_ofertas_corrida FOREIGN KEY (id_corrida) REFERENCES corridas(id) ON DELETE CASCADE,
  CONSTRAINT fk_corrida_ofertas_motorista FOREIGN KEY (id_motorista) REFERENCES usuarios(id) ON DELETE CASCADE,
  UNIQUE KEY uk_corrida_motorista_rodada (id_corrida, id_motorista, rodada),
  INDEX idx_corrida_ofertas_motorista (id_motorista, status, expira_em),
  INDEX idx_corrida_ofertas_corrida (id_corrida, status, rodada)
);

CREATE TABLE IF NOT EXISTS passageiro_enderecos_recentes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_passageiro INT NOT NULL,
  endereco VARCHAR(255) NOT NULL,
  latitude DECIMAL(10,7) NULL,
  longitude DECIMAL(10,7) NULL,
  tipo ENUM('origem', 'destino') NOT NULL DEFAULT 'destino',
  usado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_pass_enderecos_recentes_usuario FOREIGN KEY (id_passageiro) REFERENCES usuarios(id) ON DELETE CASCADE,
  INDEX idx_pass_enderecos_recentes_usuario (id_passageiro, usado_em)
);
