Sha256: 9ff2a178781d75e51254cd3d3ac24e1a99d1e0fddac6ea18a0c6dd87e78ecc60

Contents?: true

Size: 1.39 KB

Versions: 8

Compression:

Stored size: 1.39 KB

Contents

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

class  MoveRoles < Cardio::Migration
  def up
    remove_member_structure_rule
    change_existing_member_cards_to_lists
    populate_member_lists_and_delete_role_lists
  end

  def remove_member_structure_rule
    %i[members right structure].card&.delete!
  end

  def change_existing_member_cards_to_lists
    Card.search(left: { type_id: Card::RoleID },
                right_id: Card::MembersID) do |role_members|
      role_members.update! type_id: Card::ListID
    end
  end

  def populate_member_lists_and_delete_role_lists
    Card.search(left: { type_id: Card::UserID },
                right_id: Card::RolesID) do |user_roles|
      role_names = role_names_from_user_roles_card user_roles.id
      move_role_names user_roles.left.name, role_names if role_names.present?
      user_roles.delete
    end
  end

  def move_role_names user, role_names
    role_names.each do |role_name|
      next unless role_name.card&.type_code == :role

      puts "Move #{user} to role #{role_name}"
      Card.fetch(role_name, :members, new: {}).add_item! user
    end
  end

  def role_names_from_user_roles_card id
    query = "SELECT db_content FROM cards WHERE cards.id = #{id}"
    content = ActiveRecord::Base.connection
                                .exec_query(query)
                                .rows&.first&.first
    return unless content.present?
    content.split "\n"
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
card-mod-account-0.15.6 db/migrate_core_cards/20220815112551_move_roles.rb
card-mod-account-0.15.5 db/migrate_core_cards/20220815112551_move_roles.rb
card-mod-account-0.15.4 db/migrate_core_cards/20220815112551_move_roles.rb
card-mod-account-0.15.3 db/migrate_core_cards/20220815112551_move_roles.rb
card-mod-account-0.15.2.pre1 db/migrate_core_cards/20220815112551_move_roles.rb
card-mod-account-0.15.1.1 db/migrate_core_cards/20220815112551_move_roles.rb
card-mod-account-0.15.1 db/migrate_core_cards/20220815112551_move_roles.rb
card-mod-account-0.15.0 db/migrate_core_cards/20220815112551_move_roles.rb