Importación de votos: ¿Es posible usar un comando de PostgreSQL u otro para establecer recuentos de votos en temas específicos?

Hola, estoy en proceso de migrar de AnswerHub a Discourse. Sin embargo, como no tengo acceso a la base de datos de AnswerHub, he extraído todo el sitio web para recopilar las Ideas y sus respectivos recuentos de votos.

¿Cómo puedo anular el recuento de votos para una pregunta específica en Discourse? Por ejemplo, la pregunta “crear una nueva receta con naranjas” tiene 42 votos en mi AnswerHub. He importado la pregunta, pero me gustaría establecer el recuento de votos en 42 en lugar de que se establezca por defecto en 0. De esta manera, los usuarios podrán ver el número exacto de votos para cada pregunta.

¿Hay alguna forma de ejecutar un comando de PostgreSQL para establecer manualmente el recuento de votos?
¿Necesito crear más de 100 usuarios falsos para simular el recuento de votos para cada pregunta? Espero que no, ya que no es una solución ideal :stuck_out_tongue:

Gracias de antemano por tu ayuda.

:slight_smile:

1 me gusta

¡Hola Luicid!

:warning: No soy un experto y nunca he usado este plugin :upside_down_face:

Esta es una gran pregunta y me temo que no puedo responder con precisión, pero tal vez pueda darte algunas indicaciones, ya que parece que sabes un poco de programación (ya que estás migrando desde cero).

El plugin de votación utiliza 2 tablas:

discourse_voting_topic_vote_count

Nombre del campo Tipo Restricciones
id serial clave primaria
topic_id integer clave externa (referencia a topics), puede ser nulo
votes_count integer puede ser nulo
created_at timestamp
updated_at timestamp

discourse_voting_votes

Nombre del campo Tipo Restricciones
id serial clave primaria
topic_id integer clave externa (referencia a topics), puede ser nulo
user_id integer clave externa (referencia a users), puede ser nulo
archive boolean puede ser nulo, por defecto false
created_at timestamp
updated_at timestamp

Puede que también te interesen los ajustes del plugin, pero supongo que ya los conoces :slight_smile:

Finalmente, la votación de temas debe estar habilitada por categoría, así que te recomendaría habilitarlas durante la creación de las categorías en el script de importación.

En cuanto a cómo poblar correctamente los votos en el tema durante una migración, no soy un experto, pero supongo que optaría por tener usuarios aleatorios y únicos para cada voto, ya que un trabajo previene votos múltiples del mismo usuario y eliminaría los votos duplicados:

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

Poblaría los campos necesarios (a determinar) y dejaría que los trabajos completen otros campos si los hay.

También podrías echar un vistazo a todos los trabajos del plugin discourse-topic-voting/app/jobs at main · discourse/discourse-topic-voting · GitHub

Espero que esto te ayude un poco y que compartas cómo van las cosas :slight_smile:

1 me gusta

¡Guau, gracias por esta publicación genial y útil! :slight_smile:
Decidí optar por un enfoque diferente:

En mi sitio web original, pude recuperar los datos sobre quién votó por qué, así que almacené esa información en una base de datos. Más tarde, usé un script de Python con la biblioteca requests para emitir votos desde sus cuentas migradas por las ideas por las que ya habían votado, ¡y voilà!

¡Gracias de nuevo!

1 me gusta