Corrigir permalinks para apontar para topic-url e não para o primeiro post do tópico

Após uma migração personalizada, muitos permalinks apontavam para o primeiro post de um tópico em vez do próprio URL do tópico.

por exemplo, permalinks apontando para
https://forum.example.com/t/example-topic/123/1

em vez de
https://forum.example.com/t/example-topic/123


Verificação

Um fórum Discourse é afetado se houver 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;

Correção Rápida

Isso altera os permalinks para apontar diretamente para o tópico, se eles originalmente apontavam para o primeiro post do tópico.

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 pode ser uma boa rotina de limpeza para executar no final dos scripts de migração.

1 curtida

Como você criou os permalinks?

Por exemplo, aqui discourse/script/import_scripts/vanilla_mysql.rb at main · discourse/discourse · GitHub eles verificam especificamente o número do post, se for 1, então o post_não é passado (deixado como NULL) e, portanto, o permalink não deve apontar para o primeiro post.

2 curtidas

Fiz uma abordagem baseada em SQL para permalinks com base em um código semelhante a

… mas com AND post_number <> 1 faltando – então esse foi o culpado.

1 curtida

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