summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--db/migrate/20091210095437_add_object_owners_as_watchers.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/db/migrate/20091210095437_add_object_owners_as_watchers.rb b/db/migrate/20091210095437_add_object_owners_as_watchers.rb
new file mode 100644
index 0000000..0c26c62
--- /dev/null
+++ b/db/migrate/20091210095437_add_object_owners_as_watchers.rb
@@ -0,0 +1,42 @@
+class AddObjectOwnersAsWatchers < ActiveRecord::Migration
+ def self.up
+ Favorite.class_eval do
+ # Don't create events for the favorites we're gonna add here
+ def event_should_be_created?
+ false
+ end
+ end
+
+ transaction do
+ count = Project.count
+ Project.all.each_with_index do |project, idx|
+ say_with_time("Creating favorites for #{project.slug} #{idx+1}/#{count}") do
+ project_watchers = []
+ if project.owned_by_group?
+ project.owner.members.each do |member|
+ member.favorites.create!(:watchable => project)
+ project_watchers << member
+ end
+ else
+ project.owner.favorites.create!(:watchable => project)
+ project_watchers << project.owner
+ end
+
+ project.repositories.clones.each do |repo|
+ repo.committerships.map(&:members).flatten.compact.uniq.each do |user|
+ next if project_watchers.include?(user)
+ user.favorites.create!(:watchable => repo)
+ end
+
+ repo.merge_requests.each do |mr|
+ mr.user.favorites.create!(:watchable => mr)
+ end
+ end
+ end # say_with_time
+ end
+ end
+ end
+
+ def self.down
+ end
+end