Importando Votos: É Possível Usar um Comando PostgreSQL ou Outro para Definir Contagens de Votos em Tópicos Específicos?

Olá, estou no processo de migração do AnswerHub para o Discourse. No entanto, como não tenho acesso ao banco de dados do AnswerHub, raspei o site inteiro para coletar as Ideias e suas respectivas contagens de votos.

Como posso substituir a contagem de votos para uma pergunta específica no Discourse? Por exemplo, a pergunta “fazer uma nova receita com laranjas” tem 42 votos no meu AnswerHub. Importei a pergunta, mas gostaria de definir a contagem de votos para 42 em vez de o padrão ser 0. Dessa forma, os usuários poderão ver o número exato de votos para cada pergunta.

Existe alguma maneira de executar um comando PostgreSQL para definir manualmente a contagem de votos?
Preciso criar mais de 100 usuários falsos para simular a contagem de votos para cada pergunta? Espero que não, pois essa não é uma solução ideal :stuck_out_tongue:

Agradeço antecipadamente pela sua ajuda.

:slight_smile:

1 curtida

Olá Luicid!

:warning: Não sou um especialista e nunca usei este plugin :upside_down_face:

Esta é uma ótima pergunta e receio não poder responder com precisão, mas talvez eu possa dar algumas dicas, já que você parece entender um pouco de programação (já que está migrando do zero).

O plugin de votação usa 2 tabelas:

discourse_voting_topic_vote_count

Nome do Campo Tipo Restrições
id serial chave primária
topic_id integer chave estrangeira (referencia tópicos), pode ser nulo
votes_count integer pode ser nulo
created_at timestamp
updated_at timestamp

discourse_voting_votes

Nome do Campo Tipo Restrições
id serial chave primária
topic_id integer chave estrangeira (referencia tópicos), pode ser nulo
user_id integer chave estrangeira (referencia usuários), pode ser nulo
archive boolean pode ser nulo, padrão false
created_at timestamp
updated_at timestamp

Você também pode se interessar pelas configurações do plugin, mas imagino que você já esteja ciente delas :slight_smile:

Finalmente, a votação de tópicos deve ser habilitada por categoria, então eu as habilitaria durante a criação das categorias no script de importação.

Quanto a como popular corretamente os votos no tópico durante uma migração, não sou um especialista, mas acho que eu optaria por ter usuários aleatórios e únicos para cada voto, já que um job impede votos múltiplos do mesmo usuário e excluiria votos duplicados:

https://github.com/discourse/discourse-topic-voting/blob/main/app/jobs/onceoff/voting_ensure_consistency.rb#L28

Eu preencheria os campos necessários (a serem determinados) e deixaria os jobs preencherem outros campos, se houver algo assim.

Você também pode querer dar uma olhada em todos os jobs do plugin discourse-topic-voting/app/jobs at main · discourse/discourse-topic-voting · GitHub

Espero que isso ajude um pouco e que você compartilhe como as coisas vão :slight_smile:

1 curtida

Uau, obrigado por este post ótimo e útil! :slight_smile:
Decidi optar por uma abordagem diferente:

No meu site original, consegui recuperar os dados sobre quem votou em quê, então armazenei essas informações em um banco de dados. Mais tarde, usei um script Python com a biblioteca requests para registrar votos de suas contas migradas para as ideias em que já haviam votado, e voilà!

Obrigado novamente

1 curtida