SET @col_avaliacao_comentario := (
  SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = DATABASE()
    AND TABLE_NAME = 'corridas'
    AND COLUMN_NAME = 'avaliacao_comentario'
);

SET @sql := IF(
  @col_avaliacao_comentario = 0,
  'ALTER TABLE corridas ADD COLUMN avaliacao_comentario TEXT NULL AFTER avaliacao_motorista',
  'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

CREATE TABLE IF NOT EXISTS motorista_elogios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_motorista INT NOT NULL,
  id_passageiro INT NULL,
  id_corrida INT NULL,
  selo ENUM('bom_condutor', 'simpatico', 'veiculo_limpo', 'boa_rota', 'boa_conversa') NOT NULL,
  criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT fk_motorista_elogios_motorista FOREIGN KEY (id_motorista) REFERENCES usuarios(id) ON DELETE CASCADE,
  CONSTRAINT fk_motorista_elogios_passageiro FOREIGN KEY (id_passageiro) REFERENCES usuarios(id) ON DELETE SET NULL,
  CONSTRAINT fk_motorista_elogios_corrida FOREIGN KEY (id_corrida) REFERENCES corridas(id) ON DELETE SET NULL,
  INDEX idx_motorista_elogios_motorista (id_motorista, selo),
  INDEX idx_motorista_elogios_corrida (id_corrida)
);
