[TRABALHO REMUNERADO] Requisitos para plugin Discourse para serializador de visualização de tópico

O que você gostaria que fosse feito?

RE: https://community.unix.com/

Acabamos de concluir a migração para o Discourse, mas manteremos nossos fóruns antigos acessíveis até 2021, pois temos duas décadas de código legado, do qual cada um de nossos membros se orgulha (e em que investiu muito trabalho).

Para nossa equipe, que gostaria de verificar a integridade do código migrado de tempos em tempos, gostaríamos de um pequeno plugin para separar o value do topic_custom_fields e adicionar apenas o inteiro (que é o ID do tópico do fórum legado) ao TopicViewSerializer, de modo que o serializador JSON tenha o par chave-valor adicional:

"import_id" : <thread_id_of_legacy_forum>

Veja a consulta abaixo como exemplo, para que o valor adicionado ao TopicViewSerializer (para este topic_id do Discourse) seja:

"import_id": 284071
postgres=# \c discourse
Você agora está conectado ao banco de dados "discourse" como usuário "postgres".
discourse=# select * from topic_custom_fields where name like '%import_id%' and topic_id = 377947;
   id   | topic_id |   name    |     value     |         created_at         |         updated_at         
--------+----------+-----------+---------------+----------------------------+----------------------------
 239520 |   377947 | import_id | thread-284071 | 2020-04-22 03:20:03.968513 | 2020-04-22 03:20:03.968513
(1 linha)

Gostaríamos de usar essa propriedade em um componente de template da seguinte forma:

{{import_id}}

Porque gostaríamos de um pequeno componente de template <span> para o plugin-outlet topic-category, que se pareceria com isto (e visível apenas para nosso nível de confiança especificado):

<span class='import-id'>Tópico do Fórum Legado <a class='import-id-link' href='https://www.unix.com/showthread.php?t={{import_id}}'>{{import_id}}</a></span>

Quando você precisa que seja feito?

Qualquer momento nas próximas semanas está bom. Não há muita pressa.

Qual é o seu orçamento, em $ USD, que você pode oferecer para esta tarefa?

Todas as propostas razoáveis para este pequeno plugin são bem-vindas.

Informações Adicionais

Planejamos tornar este código livremente disponível para todos que realizaram uma migração semelhante. No entanto, é muito possível que outros fóruns legados não tenham uma preocupação tão alta com a integridade dos dados para código legado, e, portanto, é possível que nosso fórum seja o único a usar este plugin.

Eu fiz uma descrição “excessivamente complexa” e, talvez, “imprecisa” sobre este requisito ontem; então, acho que a descrição acima é mais simples e fácil de entender (espero):

Nota de Rodapé

Trabalhei sozinho neste pequeno plugin por vários dias, minha primeira tentativa de criar um plugin do Discourse, e continuei recebendo um valor null para import_id no TopicViewSerializer.

Atualização

Graças a um pouco de gentileza e orientação, agora tenho a parte do serializador desta tarefa funcionando.

3 curtidas

Atualização:

O trabalho neste plugin está avançando graças a um pouco de orientação gentil, encorajamento e ajuda de @spirobel.

Ainda estou trabalhando no código, passo a passo, e vou aprimorá-lo e disponibilizá-lo para qualquer migrador que possa ter uma necessidade semelhante no futuro.

@spirobel tem sido excelente para trabalhar, permitindo que eu faça a maior parte do trabalho e depure sozinho, mas fornecendo dicas, código, PRs de rascunho e dicas quando eu esbarro em um obstáculo.

Obrigado, @spirobel!

6 curtidas

Atualização:

Acabei de finalizar (versão alpha) e comecei os testes ao vivo do meu primeiro plugin.

Status:

  • Testes ao vivo

A fazer

  • Este é o meu primeiro plugin do Discourse. O link para o fórum legado está codificado diretamente no componente. Preciso transformar isso em uma configuração ajustável.
  • Melhorar o plugin ao longo do tempo para adequar o código ao “padrão Discourse”, pois atualmente está longe disso.
  • Publicar na categoria #plugin quando os testes forem concluídos.

Agradecimento

Um agradecimento especial a @spirobel pelo coaching ontem e por me ajudar a fazer o serializer e a estrutura básica do componente funcionarem.

Ressalva

Todas as práticas de codificação “não padrão ou ruins” são de minha responsabilidade.

Observações

As informações deste fórum legado são visíveis (configurável) apenas para membros com nível de confiança 4 em nossos fóruns;

7 curtidas

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