# frozen_string_literal: true

module UseCase
  module DataExport
    class Relationships < UseCase::DataExport::Base
      def files = {
        "relationships.json" => json_file!(
          relationships: [
            # don't want to add the passive (block) relationships here as it
            # would reveal who e.g. blocked the exported user, which is
            # considered A Bad Idea™
            *user.active_follow_relationships.map(&method(:collect_relationship)),
            *user.active_block_relationships.map(&method(:collect_relationship)),
            *user.active_mute_relationships.map(&method(:collect_relationship))
          ]
        )
      }

      def collect_relationship(relationship)
        {}.tap do |h|
          column_names(::Relationship).each do |field|
            h[field] = relationship[field]
          end
        end
      end
    end
  end
end