]> git.openstreetmap.org Git - rails.git/blob - db/migrate/20240605134916_add_notes_and_diary_comments_counter_caches.rb
Add note and diary comments counts to the user profile
[rails.git] / db / migrate / 20240605134916_add_notes_and_diary_comments_counter_caches.rb
1 class AddNotesAndDiaryCommentsCounterCaches < ActiveRecord::Migration[7.1]
2   class DiaryComment < ApplicationRecord
3   end
4
5   class NoteComment < ApplicationRecord
6   end
7
8   class User < ApplicationRecord
9   end
10
11   def self.up
12     add_column :users, :diary_comments_count, :integer, :default => 0
13     add_column :users, :note_comments_count, :integer, :default => 0
14
15     users_with_diary_comments = DiaryComment.distinct.pluck(:user_id)
16     users_with_diary_comments.each do |user_id|
17       User.reset_counters(user_id, :diary_comments)
18     end
19
20     users_with_note_comments = NoteComment.where.not(:author_id => nil).distinct.pluck(:author_id)
21     users_with_note_comments.each do |author_id|
22       User.reset_counters(author_id, :note_comments)
23     end
24   end
25
26   def self.down
27     remove_column :users, :diary_comments_count
28     remove_column :users, :note_comments_count
29   end
30 end