summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-12-10 11:30:40 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-12-10 11:54:59 +0100
commit0ccbb48e4b4a10c748a34b07f7044a741b05981f (patch)
tree8a1a186eae7db7b785bb46f61ddfbf0353f3c726
parentc2c20fe017a96c00811dcbd7939eceea5fd998ef (diff)
downloadgitorious-mainline-outdated-0ccbb48e4b4a10c748a34b07f7044a741b05981f.zip
gitorious-mainline-outdated-0ccbb48e4b4a10c748a34b07f7044a741b05981f.tar.gz
gitorious-mainline-outdated-0ccbb48e4b4a10c748a34b07f7044a741b05981f.tar.bz2
Migration that adds objects owner as having favorited the object
So that they'll receive feed items when there's new events for their own objects
-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