Импорт голосов: можно ли использовать команду PostgreSQL или другой способ для установки количества голосов по конкретным темам?

Привет! Я в процессе миграции с AnswerHub на Discourse. Однако, так как у меня нет доступа к базе данных AnswerHub, я выполнил парсинг всего сайта, чтобы собрать идеи и соответствующие им количества голосов.

Как можно переопределить количество голосов для конкретного вопроса в Discourse? Например, вопрос «придумать новый рецепт с апельсинами» имеет 42 голоса на моём AnswerHub. Я импортировал вопрос, но хочу установить количество голосов равным 42, а не оставлять значение по умолчанию 0. Так пользователи увидят точное количество голосов для каждого вопроса.

Есть ли способ выполнить команду PostgreSQL для ручного установки количества голосов?
Нужно ли создавать 100+ фейковых пользователей, чтобы симулировать количество голосов для каждого вопроса? Надеюсь, что нет, ведь это не идеальное решение :stuck_out_tongue:

Заранее спасибо за помощь.

:slight_smile:

Привет, Luicid!

:warning: Я не эксперт и никогда не использовал этот плагин :upside_down_face:

Отличный вопрос, и, боюсь, я не могу ответить точно, но, возможно, смогу дать несколько подсказок, так как вы, кажется, немного разбираетесь в программировании (раз уж вы мигрируете с нуля).

Плагин голосования использует две таблицы:

discourse_voting_topic_vote_count

Field Name Type Constraints
id serial primary key
topic_id integer foreign key (references topics), can be null
votes_count integer can be null
created_at timestamp
updated_at timestamp

discourse_voting_votes

Field Name Type Constraints
id serial primary key
topic_id integer foreign key (references topics), can be null
user_id integer foreign key (references users), can be null
archive boolean can be null, default false
created_at timestamp
updated_at timestamp

Вас также могут заинтересовать настройки плагина, но, думаю, вы уже о них знаете :slight_smile:

Наконец, голосование за темы должно быть включено для каждой категории, поэтому я бы включил его при создании категорий в скрипте импорта.

Что касается правильного заполнения голосов в теме во время миграции, я не эксперт, но, думаю, поступлю так: для каждого голоса создам случайного уникального пользователя, так как задание предотвращает множественные голоса от одного и того же пользователя и удалит дубликаты:

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

Я заполню необходимые поля (которые предстоит определить) и позволю заданиям заполнить остальные поля, если такие есть.

Вам также может быть интересно посмотреть на все задания плагина: discourse-topic-voting/app/jobs at main · discourse/discourse-topic-voting · GitHub

Надеюсь, это хоть немного поможет, и вы поделитесь результатами :slight_smile:

Вау, спасибо за этот отличный и полезный пост! :slight_smile:
Я решил выбрать другой подход:

На моём оригинальном сайте я мог получать данные о том, кто за что проголосовал, поэтому я сохранил эту информацию в базе данных. Позже я использовал скрипт на Python с библиотекой requests, чтобы проголосовать от имени перенесённых аккаунтов за идеи, за которые они уже голосовали, и вот так!

Ещё раз спасибо.