Можно ли восстановить серию посещений?

Здравствуйте,

Недавно мой форум проработал в режиме простоя два дня из-за проблем с доменом.

Это привело к тому, что у всех прервалась серия посещений, что для большинства людей очень плохо.

Я хочу восстановить эти серии. Как мне это сделать?

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

Если вы не знаете, как это сделать, и не получили ответ достаточно быстро, вы можете разместить запрос на бюджет в канале Marketplace.

Им нужно расставить приоритеты правильно :wink:

В любом случае, чтобы скопировать посещения с одного дня на другой, выполните следующий SQL-запрос

insert into user_visits
  select 0, user_id, '2022-09-09', posts_read, mobile, 0 
  from user_visits 
  where visited_at = '2022-09-08'
;

где первая дата — это дата, которую вы хотите подделать, а вторая — дата, с которой нужно скопировать данные.

Ричард снова спасает положение! Какое отличное решение. Я размышлял, как это сделать, не просто раздавая всем заслуги. Блестяще!

Вы бы удивились, сколько людей жаловалось на это :face_with_diagonal_mouth:

Спасибо за скрипт, где я могу его запустить?

cd /var/discourse
./launcher enter app
rails c
DB.exec("insert into user_visits select 0, user_id, '2022-09-09', posts_read, mobile, 0 from user_visits where visited_at = '2022-09-08'")

Привет, у нас снова произошел сбой, и когда я попытался восстановить записи о посещениях, возникла ошибка.

[6] pry(main)> DB.exec("insert into user_visits select 4, user_id, '2022-12-31', posts_read, mobile, 0  from user_visits where visited_at = '2022-09-01'")
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "user_visits_pkey"
DETAIL:  Key (id)=(4) already exists.

from /var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'