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

**URL:** <https://meta.discourse.org/t/importing-votes-is-it-possible-to-use-a-postgresql-command-or-other-to-set-vote-counts-on-specific-topics/266895>\
**Category:** Migration\
**Tags:** topic-voting\
**Created:** [01.Июнь.2023 14:41:02 UTC](https://meta.discourse.org/t/importing-votes-is-it-possible-to-use-a-postgresql-command-or-other-to-set-vote-counts-on-specific-topics/266895 "2023-06-01T14:41:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luicid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luicid/32/306711_2.png) [@Luicid](https://meta.discourse.org/u/Luicid)\
**Post date:** [01.Июнь.2023 14:41:02 UTC](https://meta.discourse.org/t/importing-votes-is-it-possible-to-use-a-postgresql-command-or-other-to-set-vote-counts-on-specific-topics/266895/1 "2023-06-01T14:41:02Z")

</div>

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

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

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

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

🙂

---

<div class="post-metadata">

**Author:** ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)\
**Post date:** [02.Июнь.2023 10:09:08 UTC](https://meta.discourse.org/t/importing-votes-is-it-possible-to-use-a-postgresql-command-or-other-to-set-vote-counts-on-specific-topics/266895/2 "2023-06-02T10:09:08Z")

</div>

Привет, Luicid!

⚠ Я не эксперт и никогда не использовал этот плагин 🙃

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

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

## 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 | |

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

 ![image](https://global.discourse-cdn.com/meta/original/4X/9/9/c/99c444360cf8a41dbaae6538385326a09ca9c977.png)

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

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

[https://github.com/discourse/discourse-topic-voting/blob/main/app/jobs/onceoff/voting\_ensure\_consistency.rb#L28](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](https://github.com/discourse/discourse-topic-voting/tree/main/app/jobs)

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

---

<div class="post-metadata">

**Author:** ![Luicid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luicid/32/306711_2.png) [@Luicid](https://meta.discourse.org/u/Luicid)\
**Post date:** [04.Июль.2023 09:10:20 UTC](https://meta.discourse.org/t/importing-votes-is-it-possible-to-use-a-postgresql-command-or-other-to-set-vote-counts-on-specific-topics/266895/3 "2023-07-04T09:10:20Z")

</div>

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

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

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