Corregir permalinks para apuntar a topic-url y no a la primera publicación del tema

Después de una migración personalizada, muchos permalinks apuntaban a la primera publicación de un tema en lugar de a la URL del tema en sí.

por ejemplo, permalinks apuntando a
https://forum.example.com/t/example-topic/123/1

en lugar de
https://forum.example.com/t/example-topic/123


Comprobar

Un foro de Discourse se ve afectado si hay registros para esta consulta SQL:

SELECT permalinks.*,
       posts.id,
       posts.topic_id,
       posts.post_number
FROM permalinks
         LEFT JOIN posts
                   ON posts.id = permalinks.post_id
WHERE permalinks.post_id IS NOT NULL
  AND posts.post_number = 1
LIMIT 20;

Solución Rápida

Esto cambia los permalinks para que apunten directamente al tema, si originalmente apuntaban a la primera publicación del tema.

UPDATE permalinks
SET topic_id = posts.topic_id,
    post_id  = NULL
FROM posts
WHERE permalinks.post_id = posts.id
  AND permalinks.post_id IS NOT NULL
  AND posts.post_number = 1;

Esta podría ser una buena rutina de limpieza para ejecutar al final de los scripts de migración.

1 me gusta

¿Cómo creaste los permalinks?

Por ejemplo, aquí discourse/script/import_scripts/vanilla_mysql.rb at main · discourse/discourse · GitHub comprueban específicamente el número de publicación; si es 1, entonces el post_no se pasa (se deja como NULL) y, por lo tanto, el permalink no debería apuntar a la primera publicación.

2 Me gusta

Hice un enfoque basado en SQL para los permalinks basado en un código similar a

… pero faltaba AND post_number <> 1, ¡así que ese fue el culpable!

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.