docbrown/app/services/exporter/articles.rb
rhymes 3ab9b91575
Routine Rubocop fixes (#9302)
* rubocop -A

* rubocop --auto-gen-config

* Fix sorting in Bundler/OrderedGems to consider punctuation
2020-07-14 17:24:03 +02:00

79 lines
1.5 KiB
Ruby

module Exporter
class Articles
attr_reader :name, :user
def initialize(user)
@name = :articles
@user = user
end
def export(slug: nil)
articles = user.articles
articles = articles.where(slug: slug) if slug.present?
{ "#{name}.json" => jsonify(articles) }
end
private
def allowed_attributes
time_attributes | url_attributes | general_attributes
end
def time_attributes
%i[
created_at
crossposted_at
edited_at
last_comment_at
published_at
]
end
def url_attributes
%i[
canonical_url
feed_source_url
video_closed_caption_track_url
video_source_url
video_thumbnail_url
]
end
def general_attributes
%i[
body_markdown
cached_tag_list
cached_user_name
cached_user_username
comments_count
description
language
main_image
main_image_background_hex_color
path
public_reactions_count
processed_html
published
published_from_feed
show_comments
slug
social_image
title
video
video_code
]
end
def jsonify(articles)
articles_to_jsonify = []
# load articles in batches and select only needed attributes
articles.select([:id] + allowed_attributes).find_each do |article|
articles_to_jsonify << article
end
articles_to_jsonify.to_json(only: allowed_attributes)
end
end
end