USE bulo;

CREATE TABLE IF NOT EXISTS corrida_compartilhamentos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_corrida INT NOT NULL,
  token_hash CHAR(64) NOT NULL,
  criado_por_usuario INT NULL,
  criado_por_tipo ENUM('passageiro', 'motorista', 'admin', 'sistema') NOT NULL DEFAULT 'sistema',
  ativo TINYINT(1) NOT NULL DEFAULT 1,
  expira_em DATETIME NULL,
  ultimo_acesso_em DATETIME NULL,
  acessos INT NOT NULL DEFAULT 0,
  criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_corrida_compartilhamentos_corrida FOREIGN KEY (id_corrida) REFERENCES corridas(id) ON DELETE CASCADE,
  CONSTRAINT fk_corrida_compartilhamentos_usuario FOREIGN KEY (criado_por_usuario) REFERENCES usuarios(id) ON DELETE SET NULL,
  UNIQUE KEY uk_corrida_compartilhamento_token (token_hash),
  INDEX idx_corrida_compartilhamentos_corrida (id_corrida, ativo)
);
