Sha256: 494230b6b558ccaadf119425302c2b48cf5fad7bc2e89d025e0d4826c048d76e

Contents?: true

Size: 1.14 KB

Versions: 5

Compression:

Stored size: 1.14 KB

Contents

# -*- encoding : utf-8 -*-

class WatchersToFollowing < Cardio::Migration::Core
  def up
    follower_hash = Hash.new { |h, v| h[v] = [] }

    # NOTE: this migration must find cards in the trash, because the original (1.14.0) migration attempt
    # did not successfully migration to the +*following card but did successfully delete +*watchers cards.
    # Therefore cards migrated using 1.14.0 or 1.14.1 will not have the correct migrations

    if watcher_card = Card.find_by_key("*watcher")
      Card.find_by_sql("select * from cards where right_id = #{watcher_card.id}").each do |card|
        card.include_set_modules

        next unless watched = card.left
        card.item_names.each do |user_name|
          follower_hash[user_name] << watched.name
        end
      end

      follower_hash.each do |user, items|
        next unless (card = Card.fetch(user)) && card.account
        following = card.fetch "following",  new: { type_code: :pointer }
        items.each { |item| following.add_item item }
        following.save!
      end
    end

    if watchers = Card[:watchers]
      watchers.update codename: nil
      watchers.delete!
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
card-1.101.4 db/migrate_core_cards/20141204061304_watchers_to_following.rb
card-1.101.3 db/migrate_core_cards/20141204061304_watchers_to_following.rb
card-1.101.2 db/migrate_core_cards/20141204061304_watchers_to_following.rb
card-1.101.1 db/migrate_core_cards/20141204061304_watchers_to_following.rb
card-1.101.0 db/migrate_core_cards/20141204061304_watchers_to_following.rb